120 words
1 minute
欧拉筛
2025-10-03

if (i % prime[j] == 0)

#include <stdio.h>
#include <time.h>
#define MAXN 1000
int main() {
int prime[MAXN];
int isComposite[MAXN+1] = {0};
int count = 0;
clock_t start_time, end_time;
double time_used;
start_time = clock();
for (int i = 2; i <= MAXN; i++) {
if (!isComposite[i]) {
prime[count++] = i;
printf("%d\n", i);
}
for (int j = 0; j < count && i * prime[j] <= MAXN; j++) {
isComposite[i * prime[j]] = 1;
if (i % prime[j] == 0)
break; //保证一个合数只被标记一次
}
}
printf("2-1000有 %d 个质数", count);
end_time = clock();
time_used = (double)(end_time - start_time) / CLOCKS_PER_SEC;
printf("\n用时 %f\n", time_used);
return 0;
}
欧拉筛
https://blog.282994.xyz/posts/欧拉筛/
Author
Rock
Published at
2025-10-03
License
CC BY-NC-SA 4.0