Open Jewan1120 opened 3 days ago
O(nlogn)
n 이하의 소수 구하기 $\rightarrow$ O(nlogn)
소수의 최대 거듭제곱 구하기 $\rightarrow$ O(n)
최소공배수 갱신 $\rightarrow$ O(1)
$\rightarrow$ O(nlogn)
O(n^0.5*logn)
n*O(logn)
O(n*logn)
O(NlogN)
O(plogN)
?O(NlogN)
O(NlogN)
mport java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class BJ11 { static long divide = 4294967296L; // 2^32 static long [] arr; static boolean [] barr; static int N;
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
N = Integer.parseInt(br.readLine());
long result = 1;
arr= new long [N+1];
barr = new boolean[N+1];
getPrime();
for(int i=2; i<=N;i++) {
if(result%i == 0) {
continue;
}
result= (result * arr[i]) % divide;
}
System.out.println(result);
}
private static void getPrime() {
for(int i=2; i<=N; i++) {
if(barr[i]) {
continue;
}
for(int j=i;j<=N;j+=i) {
arr[j] = i;
barr[j] = true;
}
}
}
}
문제
문제 풀이 템플릿