입력 | 출력 |
---|---|
3 16 | 3 |
5 | |
7 | |
11 | |
13 |
[ 소수 구하는 최적의 알고리즘 ]
- 에라스토테네스의 체
2부터 소수를 구하고자 하는 모든 수를 나열한 뒤, 특정 수의 배수들을 제거해 나가는 알고리즘
#include "stdio.h"
int main()
{
int M, N;
//index로 소수 판별 - 소수면 0, 소수가 아니면 1 채우기
//arr[1]=1로 채움
int arr[1000001] = {0,1};
scanf("%d %d", &M, &N);
//N까지 i*j로 특정 수의 배수를 찾고 그 수는 1로 채움
for(int i=2; i<=N; i++){
for(int j=2; i*j<=N; j++){
arr[i*j]=1;
}
}
for(int k=M; k<=N; k++){
//값이 0인 위치만 출력
if(!arr[k]){
printf("%d\n",k);
}
}
return 0;
}