#include <stdio.h>
int c[1000001];int main() { int n, m; scanf("%d %d", &n, &m);
for (int i = 2; i <= m; i++) { if (c[i] != 0) { continue; } if(i>=n) printf("%d\n", i); for (int j = 1; j*i <= m; j++) { c[j*i] = 1; } }}
간단하게 코드를 구성해서 통과하였는데요
만약 N이 1이들어오고 M이 1000000이 들어오게되면 프린트만 2초가 넘게 걸릴텐데, 어떻게 통과한걸 까요?
기준이 궁금합니다.
문제 번호를 쓰는 칸이 있고, 소스코드를 넣는 칸도 있습니다.
댓글을 작성하려면 로그인해야 합니다.
leaps 6년 전
#include <stdio.h>
int c[1000001];
int main() {
int n, m;
scanf("%d %d", &n, &m);
for (int i = 2; i <= m; i++) {
if (c[i] != 0) {
continue;
}
if(i>=n) printf("%d\n", i);
for (int j = 1; j*i <= m; j++) {
c[j*i] = 1;
}
}
}
간단하게 코드를 구성해서 통과하였는데요
만약 N이 1이들어오고 M이 1000000이 들어오게되면 프린트만 2초가 넘게 걸릴텐데, 어떻게 통과한걸 까요?
기준이 궁금합니다.