문제
https://www.acmicpc.net/problem/1929
1929번: 소수 구하기
첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다.
www.acmicpc.net
풀이
에라토스테네스의 체를 이용하여 풀면 되는 정석 문제다
코드
import java.io.*;
import java.util.*;
public class Main {
public static void main(String args[]) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int m = Integer.parseInt(st.nextToken());
int n = Integer.parseInt(st.nextToken());
boolean isPrime [] = new boolean [n+1];
Arrays.fill(isPrime, true);
isPrime[0] = false;
isPrime[1] = false;
for(int i=2 ; i*i <= n; i++){
if(!isPrime[i])
continue;
for(int j = i*i; j <=n ; j += i ){
isPrime[j] = false;
}
}
for(int i=m;i<=n;i++){
if(isPrime[i]){
System.out.println(i);
}
}
}
}
문제
https://www.acmicpc.net/problem/1929
1929번: 소수 구하기
첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다.
www.acmicpc.net
풀이
에라토스테네스의 체를 이용하여 풀면 되는 정석 문제다
코드
import java.io.*; import java.util.*; public class Main { public static void main(String args[]) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); int m = Integer.parseInt(st.nextToken()); int n = Integer.parseInt(st.nextToken()); boolean isPrime [] = new boolean [n+1]; Arrays.fill(isPrime, true); isPrime[0] = false; isPrime[1] = false; for(int i=2 ; i*i <= n; i++){ if(!isPrime[i]) continue; for(int j = i*i; j <=n ; j += i ){ isPrime[j] = false; } } for(int i=m;i<=n;i++){ if(isPrime[i]){ System.out.println(i); } } } }