| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 14210 人关注过本帖
标题:一个判断素数的算法
只看楼主 加入收藏
tt7721
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:60
专家分:107
注 册:2011-8-7
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:7 
一个判断素数的算法
书上的代码
k=sqrt(m);
for (i=2;i<=k;i++)
if (m%i==0) break;
if (i>k) printf("%d 是个素数",m);
else printf("%d 不是素数",m);
这样的算法有什么好呀?
我的代码是直接判断m%i
这样多好理解
但是书上既然那样弄了 我觉得应该有别的意思。
大家教教我吧
搜索更多相关主题的帖子: 算法 
2012-01-25 17:14
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:8 
这样可以减少判断的次数,提高效率。
比如求10007是不是素数。你的方法需要循环10006次,而上面的方法只需要循环99次。

重剑无锋,大巧不工
2012-01-25 17:25
tt7721
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:60
专家分:107
注 册:2011-8-7
收藏
得分:0 
回复 2楼 beyondyf
额。。我还是想不太明白这个数学问题。。为什么大于根号下M的部分就不需要再判断了。。。
2012-01-25 17:35
fourleaves
Rank: 2
等 级:论坛游民
帖 子:194
专家分:99
注 册:2010-5-8
收藏
得分:2 
回复 3楼 tt7721
这是个数学证明~~~数学家证明过咯~~去google一下就ok咯

再复杂的问题也基于最简单的原理。耐心,耐心!丰富自己!等待时机!
2012-01-25 17:39
tt7721
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:60
专家分:107
注 册:2011-8-7
收藏
得分:0 
。。我了个去  竟然是个数学家证明的。记住算了。
2012-01-25 17:44
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
這就叫專業知識。你沒學過數論,不知道這個數學定理,就不必糾結於它的算法代碼,因為不是你的專業。學編程,是學編程的知識,不是學專業知識。但是解決問題的能力由你的專業知識決定,因此,你應該在自己的專業知識範圍內做編程題目,依靠專業知識而來的再巧妙的算法,均與你無關。

授人以渔,不授人以鱼。
2012-01-25 18:15
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
之前在短消息里已经给楼主证明了一次,这里再严谨地证明一遍吧。
这个问题归结于这样的命题:
正整数A,设它的平方根为Q
1、如果存在一个大于1小于Q的整数可以整除A,则必然存在一个大于Q小于A的整数可以整除A;
2、如果不存在一个大于1小于Q的整数可以整除A,则必然也不存在一个大于Q小于A的整数可以整除A。

先证明第1条
设B是一个大于1小于Q的整数,且B可以整除A。按整除的定义存在一个整数C,使得 B * C = A
C必然大于Q。因为如果C小于等于Q,则B * C <= B * Q < Q * Q = A。这与整除定义相矛盾。

再证明第2条
设C是一个整数,Q < C < A,且C可以整除A。按整除的定义存在一个整数B,使得 B * C = A
由于 Q < C 所以 B < Q(证明方法同上,不再赘述),这与题设2矛盾,所以这样的C不存在。

证毕

重剑无锋,大巧不工
2012-01-25 19:06
tt7721
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:60
专家分:107
注 册:2011-8-7
收藏
得分:0 
回复 7楼 beyondyf
。。。激动之情 无以言表
2012-01-26 09:42
快速回复:一个判断素数的算法
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020730 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved