🧠 Algorithm/[C] BOJ

[C언어] 1929번 - 소수 구하기

0_ch4n 2022. 4. 1. 12:05
반응형

문제

M이상 N이하의 소수를 모두 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다.

출력

한 줄에 하나씩, 증가하는 순서대로 소수를 출력한다.

코드

#include <stdio.h>
#include <math.h>

int main(void) {

    int m, n;
    int arr[1000001] = {1, 1,}; //0과 1은 소수가 아니기에 1을 입력해놓고 시작

    scanf("%d %d", &m, &n); //m과 n 입력

    for(int i = 2; i <= (int) sqrt(n); i++) { //주어진 범위 내의 소수의 배수들은 1을 입력하며 제외
        for(int j = 2; i * j <= n; j++) {
            arr[i * j] = 1;
        }
    }

    for(int k = m; k <= n; k++) { //범위 내의 0인 값들 출력
        if(arr[k] == 0) {
            printf("%d\n", k);
        }
    }

    return 0;
}
반응형