- 0
- 0
- 约1.27千字
- 约 3页
- 2023-05-23 发布于四川
- 举报
用筛选法求素数
.解释下什么是筛选法?
筛选法又称筛法,具体做法是:先把N个自然数按次序排列起 来。1不是质数,也不是合数,要划去。第二个数2是质数留下 来,而把2后面所有能被2整除的数都划去。2后面第一个没划去 的数是3,把3留下,再把3后面所有能被3整除的数都划去。3后 面第一个没划去的数是5,把5留下,再把5后面所有能被5整除 的数都划去。这样一直做下去,就会把不超过N的全部合数都筛 掉,留下的就是不超过N的全部质数。
.程序步骤:
1》先将1挖掉(因为1不是素数)。
2用2去除它后面的各个数,把能被2整除的数挖掉,即把2 的倍数挖掉。
〈3〉用3去除它后面的各数,把3的倍数挖掉。
4〉分别用5…各数作为除数去除这些数以后的各数。
3?具体应用(求100以内的素数):
基本思想是:把从1开始的、某一范围内的正整数从小到大顺 序排列,把不是素数的数全部赋值为0,最后只输出不是零的数即 素数。1不是素数,首先把它换为0。剩下的数中选择最小的数是素 数,然后把它的倍数全部换为0。依次类推,直到结束。
如有:
123456789 10 11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30
1不是素数,换为0。剩下的数中2最小,是素数,然后把它的倍数全部换为0 ,余下的
数是:
0230507090
11 0 13 0 15 0 17 0 19 0
21 0 23 0 25 0 27 0 29 0
剩下的数中3最小,是素数,然后把它的倍数全部换为0 ,如此下去直到所有的数都被筛
完,求出的素数为:
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
4.代码如下(vc6. 0):
〃用筛选法求100以内的素数
5. S
int iJk=0,a[~100 for(i=0;iV100;i++
9. M
a[i]=i+l; 〃将 1?100 赋值给 a[0]?a[99]
IL I!
12. |
13.
14.
a[0]=0;
for(i=0;iV99;i++
〃先把a[0]赋值为0
15?
16. ■
for(j=i+l;j100;i++
17.
18.
20.
a[j]=0;
〃把不是素数的都赋|
值为0
26 .日
27. |
28.
printf。筛选法求出100以内的素数为:\n);
29.
E
■
〃选出值不为0的数,即素数
printf(”%4d,a
printf(\rT);
printf(“\n);
0)
41. |
42. |
〃输出10个数后换行
|
44.0
return 0;
5 .运行效果:
筛选法求出1以内的素数为:
2 3 5 7 11 13 17 19 23 29
31 37 41 43 47 53 59 61 67 71
73 Press
73 Press
any key to continue
(全文完)
您可能关注的文档
最近下载
- 如何找回误删微信好友,微信好友一键恢复.doc VIP
- 《蜀道难》课件34张.pptx VIP
- 《建筑地面工程施工质量验收规范》GB-50209-2022.pdf VIP
- 尼龙拉架织物的除油原理和产品资料.ppt VIP
- 2026年黑龙江农垦职业学院单招职业技能考试题库附答案.docx VIP
- 在带头强化政治忠诚、提高政治能力等“五个带头”方面个人对照检查材料【两篇】供参考2026.docx VIP
- 大病低保申请书.docx VIP
- 盐酸(31%)安全技术说明书.doc VIP
- 解读GB 6441-2025《生产安全事故分类与编码》.pptx
- FUJITSU 富士通存储系统ETERNUS DX60 S4 DX100 S4 DX200 S4, ETERNUS DX60 S3 DX100 S3 DX200 S3, ETERNUS DX500 S3 DX600 S3, ETERNUS DX8100 S3 DX8700 S3 DX8900 S3, ETERNUS AF250 AF650, ETERNUS DX200F 用户手册.pdf VIP
原创力文档

文档评论(0)