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;

}

运行结果: