1. ๋ฌธ์ ์ค๋ช ๐
2. ๊ตฌํ ๋ฐฉ๋ฒ ๐๏ธ
KEY WORD
: ์๋ผํ ์คํ
๋ค์ค์ ์ฒด
์๋ผํ ์คํ ๋ค์ค์ ์ฒด๋ฅผ ๊ตฌํํด๋ณด๋ผ๊ณ ์ค ์ฐ์ต์ฉ ๋ฌธ์ ์ด๋ค. ์์ธํ ์ค๋ช ์ ์ด๋ก ์ ์ ๋ฆฌํ ๋งํฌ๋ฅผ ๋จ๊ธฐ๊ฒ ๋ค.
(1) ์๊ฐ๋ณต์ก๋ ๋ถ์ ๐
๋ฒ์์ ๋์ N
์ด๋ผ๊ณ ํ ๋,
$O(N \log(\log N))$
3. ์ฝ๋ ์๊ฐ ๐
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class Main {
static int N, M;
static boolean [] nums;
static StringBuilder ans = new StringBuilder();
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
N = Integer.parseInt(st.nextToken());
M = Integer.parseInt(st.nextToken());
nums = new boolean [M + 1];
prime_shifter();
for (int i = N; i <= M; i++) {
if(nums[i]) ans.append(i).append("\n");
}
System.out.println(ans);
}
public static void prime_shifter(){
Arrays.fill(nums, true);
nums[1] = false;
nums[0] = false;
for (int i = 2; i <= Math.sqrt(M); i++) {
if(nums[i]){
for (int j = i*i; j <= M; j+=i) {
nums[j] = false;
}
}
}
}
}
4. ๋ฐฐ์ด ๊ฒ๋ค ๐ฏ
์๋ผํ ์คํ
๋ค์ค์ ์ฒด์์ i๋ฅผ Math.sqrt(M)
์ ๊น์ง๋ง ๋ด๋ ๋๋ ์ด์ ๋ฅผ ์๊ณ ์์ด์ ์ฒ์์ OutOfArrayIndex Error
๋ฅผ ๋ฐ์๋ค. ๋ค์ ๊ทธ ์ด์ ๋ฅผ ์๊ฒ ๋์ด์ ๋คํ์ด๋ค. ์ด์ ๋ ์ด๋ก ๋งํฌ์ ์ ํ์๋ค.
0