C程序设计第六章作业 1
程序员成长之旅 · 程序员成长之旅/C语言/习题(C语言程序设计)/第六章习题 · 237 字
问:
用筛选法求出100以内的素数
答:
#include<stdio.h>
#include<math.h>
int main() {
int i = 0, j = 0, k = 0, p = 0, l = 0;
int Num[101] = { 0 };
for (i = 1; i <= 100; i++) {
Num[i] = i;
}
Num[1] = -1;//现将 1 标记为非素数
for (i = 2; i < sqrt(100); i++) {//因为计算一个数是否素数 只需计算从 2 到 自身数字的根号 -1 即可
for (j = i + 1; j <= 100; j++) {// 因为1%n==0 会出错出错 所以为在i+1
if (Num[j] != -1) {//防止重复筛选以提升效率
if (Num[j] % i == 0) {//如果能被整除 就标记为 非素数
Num[j] = -1;
}
}
}
}
for (p = 1, l = 0; p <= 100; p++) {
if (Num[p] != -1) {//没有被标记为 “-1” 的数字才会被输出 即是素数
printf("%d\t", Num[p]);
l++;
if (l % 5 == 0) {
printf("\n");
}
}
}
return 0;
}
运行结果:
