๋ฌธ์
M์ด์ N์ดํ์ ์์๋ฅผ ๋ชจ๋ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ์์ฐ์ M๊ณผ N์ด ๋น ์นธ์ ์ฌ์ด์ ๋๊ณ ์ฃผ์ด์ง๋ค. (1 ≤ M ≤ N ≤ 1,000,000) M์ด์ N์ดํ์ ์์๊ฐ ํ๋ ์ด์ ์๋ ์ ๋ ฅ๋ง ์ฃผ์ด์ง๋ค.
์ถ๋ ฅ
ํ ์ค์ ํ๋์ฉ, ์ฆ๊ฐํ๋ ์์๋๋ก ์์๋ฅผ ์ถ๋ ฅํ๋ค.
์์ ์ ๋ ฅ
3 16
์์ ์ถ๋ ฅ
3
5
7
11
13
ํ์ด
1. ์ซ์ m๊ณผ n์ ์ ๋ ฅ๋ฐ์ n+1ํฌ๊ธฐ์ ๋ฐฐ์ด์ ์์ฑ. ๋ฐฐ์ด์ idx๊ฐ์ด ์ซ์๋ผ๊ณ ๊ฐ์ ํ๋ค.
2. ์๋ผํ ์คํ ๋ค์ค์ ์ฒด์ ๋ฐ๋ผ < 2๋ถํฐ ๋ฃจํธn +1์ ๋ฒ๋ฆผ์์ธ sqrt >์ ๋ฐฐ์์ (๋ฐฐ์๋ ์์๊ฐ ์๋๋ฏ๋ก) i๊ฐ j๋ ๊ฐ์ง ์์๋ (์ฒซ๋ฒ์งธ ์๋ ๋จ๊ฒจ๋๊ธฐ ์ํด) -1์ ๋์
3. m๊ณผ n ์ฌ์ด์ ๋ฐฐ์ด์์ -1์ด ์๋ ๋ฐฐ์ด์ idx ๊ฐ์ ์ถ๋ ฅ
import java.io.*;
import java.util.StringTokenizer;
public class B1929 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st = new StringTokenizer(br.readLine());
int m = Integer.parseInt(st.nextToken());
int n = Integer.parseInt(st.nextToken());
int sqrt = (int)(Math.sqrt(n) + 1);
int[] prime = new int[n+1];
for(int i = 2; i <= sqrt; i++) {
for(int j = i; j <= n; j+=i) {
if (prime[j] == 0 && j != i && j % i == 0) {
prime[j] = -1;
}
}
}
for(int i = m; i < prime.length; i++) {
if(i != 1 && prime[i] != -1) {
bw.write(i + "\n");
}
}
bw.flush();
}
}