Algorithm/inflearn

★소수(에라토스테네스 체)

마닐라 2021. 9. 6. 20:34

import java.util.ArrayList;
import java.util.Scanner;

class Main {
    public int solution(int n) {
        int answer = 0;
        int[] ch = new int[n+1];

        //* 1과 자기 자신만으로 나누어 떨어지는 게 소수임
        for(int i = 2; i < n; i++){
            if(ch[i] == 0){
                answer++;
                for(int j = i; j <= n; j=j+i) ch[j] = 1;
            }
        }
        //i가 2일 때 j가 2씩 증가 -> 2의 배수들을 1로 변환
        //i가 3일 때 j가 3씩 증가 -> 3의 배수들을 1로 변환
        //i가 4일 때 ch[4] == 1 이므로 넘어감

        return answer;
    }

    public static void main(String[] args) {
        Main T = new Main();
        Scanner kb = new Scanner(System.in);

        int n = kb.nextInt();

        System.out.println(T.solution(n));


    }
}

 

'Algorithm > inflearn' 카테고리의 다른 글

점수계산  (0) 2021.09.08
★뒤집은 소수  (0) 2021.09.06
피보나치 수열  (0) 2021.09.06
가위 바위 보  (0) 2021.09.06
보이는 학생  (0) 2021.09.06