Java/코테

에라토스테네스 체

Hyunebee 2022. 2. 27. 18:33
import java.util.*;

class Main {
    public int solution(int size) {
        int count = 0;
        int[] numArray = new int[size+1]; // n까지 입력받을 배열 0~n임으로 n-0+1이 배열크기

        for(int i = 2; i <= size; i++){ // 0과1은 소수에 영향을 주지않음 2부터 시작
            if (numArray[i] == 0){// 해당 배열의 값이 0이면 해당 숫자는 약수를 가지지 않는다는것
                count++;
                for(int j = i ; j <= size; j += i){//배열안에 i의 배수를 제거함 
                    numArray[j] = 1;
                }
            }
        }
        return count;
    }

    public static void main(String[] args){
        Main T = new Main();
        Scanner scanner = new Scanner(System.in);
        int s = scanner.nextInt();
        System.out.println(T.solution(s));

    }

}

j < size는 제곱근으로 대체할 수 있다. 

 

원리는 2부터 시작해서 자기 자신의 배수를 지우는 식으로 진행한다.