<섹션2-ARRAY> 5. 소수(에라토스테네스 체)

조이·2021년 7월 28일
0

자바 알고리즘

목록 보기
17/41
post-thumbnail

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) 에라토스테네스 방식이 소수를 구하는 방법 중 가장 빠르다.

profile
joy_study

0개의 댓글