PS/Baekjoon Online Judge

[백준 1929] 소수 구하기 [C]

kimyoungrok 2021. 7. 28. 02:11

백준 - 1929


풀이

"백준 1978 소수 찾기"문제와 유사하다.

단, 1은 소수가 아니다 arr[0] = 0으로 초기화해주자.  


소스코드

#include <stdio.h>
#include <math.h>
#define MAX 1000000
int arr[MAX];
int main(){
    int idx = 3;
    for (int i = 0; i < MAX; i++)
        arr[i] = i+1;
    for (int i = 2; i <= sqrt(MAX); i++)
        if (arr[i-1])
            for (int j = i*2; j <= MAX; j += i)
                arr[j-1] = 0;
    arr[0] = 0;
    int M, N, prime = 0, num;
    scanf("%d %d", &M, &N);
    for (int i = M-1; i < N; i++){
        if (arr[i])
            printf("%d\n", arr[i]);
    }
}

출처 및 참고자료

 

1929번: 소수 구하기

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

www.acmicpc.net

 

[백준 1978] 소수 찾기 [C]

풀이 입력받은 수 num이 num/2 이하의 범위 중에 소수가 존재하는지 몇 줄 내로 간단하게 해결할 수 있지만, 에라토스테네스의 체를 이용해 효율적으로 풀이해봤다. 에라토스테네스의 체는 고대

kyr-db.tistory.com