- 11
- 0
- 约1.09万字
- 约 8页
- 2018-11-16 发布于江苏
- 举报
C语言求素数算法
HYPERLINK /renyangok/articles/53309.html 如何求素数
自然数是0,1,2……
素数是2,3,5……(不包括1的只能背1和它本身整除的自然数)
?#includestdio.h
#include math.h
void main()
{ int i ,j, flag=1;
for(i=101; i200; i++)
{
flag = 1;
for(j=2; j=sqrt(200); j++)
if(i%j == 0){
flag = 0;
break;
}
if(flag == 1)
printf(i=%d是素数\n,i);
}
}
【1】求10000以内的所有素数。素数是除了1和它本身之外再不能被其他数整除的自然数。由于找不到一个通项公式来表示所有的素数,所以对于数学家来说,素数一直是一个未解之谜。像著名的 哥德巴赫猜想、孪生素数猜想,几百年来不知吸引了世界上多少优秀的数学家。尽管他们苦心钻研,呕心沥血,但至今仍然未见分晓。自从有了计算机之后,人们借助于计算机的威力,已经找到了2216091以内的所有素数。求素数的方法有很多种,最简单的方法是根据素数的定义来求。对于一个自然数N,用大于1小于N的各个自然数都去除一下N,如果都除不尽,则N为素数,否则N为合数。但是,如果用素数定义的方法来编制计算机程序,它的效率一定是非常低的,其中有许多地方都值得改进。第一,对于一个自然数N,只要能被一个非1非自身的数整除,它就肯定不是素数,所以不必再用其他的数去除。第二,对于N来说,只需用小于N的素数去除就可以了。例如,如果N能被15整除,实际上就能被3和5整除,如果N不能被3和5整除,那么N也决不会被15整除。第三,对于N来说,不必用从2到N一1的所有素数去除,只需用小于等于√N(根号N)的所有素数去除就可以了。这一点可以用反证法来证明:如果N是合数,则一定存在大于1小于N的整数d1和d2,使得N=d1×d2。如果d1和d2均大于√N,则有:N=d1×d2√N×√N=N。而这是不可能的,所以,d1和d2中必有一个小于或等于√N。基于上述分析,设计算法如下:(1)用2,3,5,7逐个试除N的方法求出100以内的所有素数。(2)用100以内的所有素数逐个试除的方法求出10000以内的素数。首先,将2,3,5,7分别存放在a[1]、a[2]、a[3]、a[4]中,以后每求出一个素数,只要不大于100,就依次存放在A数组中的一个单元 中。当我们求100—10000之间的素数时,可依次用a[1]-a[2]的素数去试除N,这个范围内的素数可以不保存,直接打印。【2】用筛法求素数。简单介绍一下厄拉多塞筛法。厄拉多塞是一位古希腊数学家,他在寻找素数时,采用了一种与众不同的方法:先将2-N的各数写在纸上:
在2的上面画一个圆圈,然后划去2的其他倍数;第一个既未画圈又没有被划去的数是3,将它画圈,再划去3的其他倍数;现在既未画圈又没有被划去的第一个数 是5,将它画圈,并划去5的其他倍数……依次类推,一直到所有小于或等于N的各数都画了圈或划去为止。这时,表中画了圈的以及未划去的那些数正好就是小于 N的素数。
这很像一面筛子,把满足条件的数留下来,把不满足条件的数筛掉。由于这种方法是厄拉多塞首先发明的,所以,后人就把这种方法称作厄拉多塞筛法。在计算机中,筛法可以用给数组单元置零的方法来实现。具体来说就是:首先开一个数组:a[i],i=1,2,3,…,同时,令所有的数组元素都等于下标 值,即a[i]=i,当i不是素数时,令a[i]=0 。当输出结果时,只要判断a[i]是否等于零即可,如果a[i]=0,则令i=i+1,检查下一个a[i]。筛法是计算机程序设计中常用的算法之一。【3】用6N±1法求素数。任何一个自然数,总可以表示成为如下的形式之一:6N,6N+1,6N+2,6N+3,6N+4,6N+5 (N=0,1,2,…)显然,当N≥1时,6N,6N+2,6N+3,6N+4都不是素数,只有形如6N+1和6N+5的自然数有可能是素数。所以,除了2和3之外,所有的素数都可以表示成6N±1的形式(N为自然数)。根据上述分析,我们可以构造另一面筛子,只对形如6 N±1的自然数进行筛选,这样就可以大大减少筛选的次数,从而进一步提高程序的运行效率和速度。在程序上,我们可以用一个二重循环实现这一点,外循环i按3的倍数递增,内循环j为0-1的循环,则2(i+j)-1恰好就是形如6N±1的自然数。
HYPERLINK /luluping/archive/2010/03/03/1677552.html 浅析求素数算法 注意: 如果没有特殊说明
您可能关注的文档
- International FinancialManagement 6国际财务管理课件.ppt
- 商 务 谈 判 (第二版)第4章准备.ppt
- 服务营销 第8章+服务补救.ppt
- 第八课《财政与税收》课件(共69张PPT).ppt
- -学度石家庄栾城高三文科质量检测.doc
- AFBS铝合金体系.doc
- ANSYSICEMCFD优秀教材.doc
- BA经销商场规划书.doc
- Blend创建或修改.docx
- BRABENDER计量称培训优秀教材.doc
- 深圳市干部在线学习平台选课系统:深度剖析与创新设计.docx
- 社会转型期精神困境与破局之策:理论、问题与路径.docx
- 多维视角下L证券公司发展战略的深度剖析与路径选择.docx
- 北京市生产性服务业与制造业技术效率的耦合共生研究.docx
- 以标准化赋能基层行政服务:S省X市的实践与探索.docx
- WTO规则下政府与准政府组织合作的模式、挑战与优化路径研究.docx
- 移动自组网络安全机制与检测系统的深度剖析与实践.docx
- 基于Unity3D的船舶摇荡运动实时仿真技术研究与实现.docx
- 从近代工商会馆探寻市场化密码及其对现代市场经济的镜鉴.docx
- 论刑罚适用价值理念在量刑中的多维审视与实践融合.docx
原创力文档

文档评论(0)