반응형
문제
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;
}
반응형
'🧠 Algorithm > [C] BOJ' 카테고리의 다른 글
[C언어] 9020번 - 골드바흐의 추측 (0) | 2022.04.01 |
---|---|
[C언어] 4948번 - 베르트랑 공준 (0) | 2022.04.01 |
[C언어] 11653번 - 소인수분해 (0) | 2022.04.01 |
[C언어] 2581번 - 소수 (0) | 2022.04.01 |
[C언어] 1978번 - 소수 찾기 (0) | 2022.04.01 |