Hard deck/리포트

037 : 소수 구하기

서버관리자 페페 2022. 7. 30. 14:12
(Briefing)
문제 단 하나의 맥락 입출력과 되어야 하는 그림
M이상 N 이하의 소수를 모두 출력하는 프로그램을 작성하라 에라토스테네스의 체 I //
자연수 M과 N

O //
소수 출력

 

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {

        // Input Supply Cable
        Scanner sc = new Scanner(System.in);
        int M = sc.nextInt();
        int N = sc.nextInt();

        // Preprocessing
        int[] A = new int[N+1];
        for (int i = 2; i < N; i++) {
            A[i] = i;
        }

        // Operating Sieve
        for(int i = 2; i <= Math.sqrt(N); i++) {
            if (A[i] == 0) {
                continue;
            }
            for (int j = i + i; j <= N; j = j + i) {
                A[j] = 0;
            }
        }

        // Output Extracting Cable
        for (int i = M; i <= N; i++) {
            if (A[i] != 0) {
                System.out.println(A[(int) i]);
            }
        }
    }
}

 

(경향성과 모듈)

- 에라스토테네스의 체 : 2배수부터 시작해서 끝 시행 공간까지 3배수 4배수 등을 지운다

- 프로세스 및 아웃풋에 영향이 가는 것이 아닌, M~N은 그저 계산된 값의 공간을 쪼개는 범위일 뿐이다

그래서 소수를 먼저 구하고, M이상 출력함으로써 원하는 결과를 추출한다

 

(절차적 부분)

- N까지 다 계산하는 것이 아닌, sqrt(N)까지 계산한다

- value를 0으로 만들고, 0이 아닌 것을 출력함으로써 지운다

- 제곱근 계산? > 마지막에 int로 형변환을 해준다

 

'Hard deck > 리포트' 카테고리의 다른 글

041 : Euler phi  (2) 2022.08.03
040 : 제곱이 아닌 수 찾기  (3) 2022.07.30
036 : 회의실 배정하기  (2) 2022.07.29
031 : 배열에서 K번째 수 찾기  (0) 2022.07.04
027 : BFS를 사용하여 미로 탐색하기  (5) 2022.07.04