📦 归档笔记 — 原创建于 WizNote,仅作归档展示;观点以当年为准,非最新。

C程序设计第六章作业 1

创建时间2018-02-12最后修改2018-02-12原位置/程序员成长之旅/C语言/习题(C语言程序设计)/第六章习题/字数237图片/附件2
目录:程序员成长之旅/C语言/习题(C语言程序设计)/第六章习题

问:

用筛选法求出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;

}

运行结果:

🖼 图片占位(归档模式)图片见原始导出:C%E7%A8%8B%E5%BA%8F%E8%AE%BE%E8%AE%A1%E7%AC%AC%E5%85%AD%E7%AB%A0%E4%BD%9C%E4%B8%9A%201.assets/3e9b53f9-b495-49e4-8d0c-3d1187990c97.png