-
Notifications
You must be signed in to change notification settings - Fork 0
输出1k以内素数
Xu Pu edited this page Sep 28, 2015
·
2 revisions
简易版本
#include <stdio.h>
int main() {
int flag;
for (int i = 1; i < 1000; i ++) {
flag = 0;
for (int j = 2; j < i; j++) {
if (i % j == 0) {
flag = 1;
break;
}
}
if (flag == 0) {
printf("%d\n", i);
}
}
return 0;
}
优化版本
#include <stdio.h>
#include <math.h>
int main() {
printf("1\n2\n");
int flag;
for (int i = 3; i < 1000; i += 2) { // 大于2的所有偶数都不是素数
flag = 0;
for (int j = sqrt(i); j >= 3; j--) { // 如果是合数那么 a*b 和 b*a 都成立所以只需判断其一
if (i % j == 0) {
flag = 1;
break;
}
}
if (flag == 0) {
printf("%d\n", i);
}
}
return 0;
}
以及你还可以搜到素数筛法
等其他求解方法。