5. 소수(에라토스테네스 체)
자연수 N이 입력되면 1부터 N까지의 소수의 개수를 출력하는 프로그램을 작성하세요. 만약 20이 입력되면 1부터 20까지의 소수는 2, 3, 5, 7, 11, 13, 17, 19로 총 8개입니다.
첫 줄에 자연수의 개수 N(2<=N<=200,000)이 주어집니다.
첫 줄에 소수의 개수를 출력합니다.
===================================================
배열을 다 0으로 만든후 0이면 answer에 값을 추가하고 그 해당 수의 배수는 모두 1로 만들면 나머지 값들은 소수로 처리되지 않으므로 소수의 갯수를 구할 수 있다.
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public int solution(int number) {
int answer=0;
int [] array = new int[number+1];
for(int i=2;i<=number;i++) {
if(array[i]==0) {
answer++;
for(int j=i;j<=number;j=j+i)
array[j]=1;
}
}
return answer;
}
public static void main(String[] args) {
Main main = new Main();
Scanner scan = new Scanner(System.in);
int number=scan.nextInt();
System.out.println(main.solution(number));
}
}
1) 에라토스테네스 방식이 소수를 구하는 방법 중 가장 빠르다.