| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 873 人关注过本帖
标题:求助 素数的简单问题
只看楼主 加入收藏
werty_sy
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2008-6-22
收藏
 问题点数:0 回复次数:7 
求助 素数的简单问题
判断一个数是否为素数的过程中
For b = 2 To a - 1
Next b
If a Mod b = 0 Then
Text2.Text = "这不是素数"
Else
Text2.Text = "这是素数"
为什么b=2 to a -1得到错误的结果,要用b = sqr(a)才能使程序正确?
谢谢
搜索更多相关主题的帖子: 素数 简单问题 
2008-09-05 09:54
multiple1902
Rank: 8Rank: 8
等 级:贵宾
威 望:42
帖 子:4881
专家分:671
注 册:2007-2-9
收藏
得分:0 
你for之后直接就next啊?结果不错就怪了。你用sqr结果能正确就怪了。因为照你这意思,居然是一个O(1)的判断素数算法。史上还没有这么强大的算法。费尔马小定理也是要多试几个数的。

再说了,sqr是平方吧?sqrt是平方根吧?
2008-09-05 10:46
punisher106
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2008-8-13
收藏
得分:0 
素数也就是除了一和他本身之外,没有别的除数了的数。比如13 。判断方法一般是从二循环到该数的一半,先不管他是否能整除二。到底为什么要循到一半就不用说了吧,3×5和5×3都能证明他不是素数。
2008-09-05 11:08
werty_sy
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2008-6-22
收藏
得分:0 
for之后直接next可以的啊,然后用sqr(x)能算出正确结果的
punisher讲的明白了,原来要循环一半就可以了

谢谢你们
2008-09-05 12:34
punisher106
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2008-8-13
收藏
得分:0 
举个例子,比如判断24是否是素数。那我们开始循环。假设循环因子是i ,那开始的时候,i=2 ,满足条件。2×12=24.当i=3,满足条件。3×8=24 。再向下继续循环,可以得到 2*12,3*8,4*6,6*4,8*3,12*2这些的组合,从中不难发现原理了吧,他们都是对称的,有2×12,必然会有12×2。所以 ,我们只要是循环到了一半,就完全可以推断出另外的一半的组合。不知道这么说,是否把问题说明白了。其实我也是新手,相互帮助。
2008-09-05 18:58
multiple1902
Rank: 8Rank: 8
等 级:贵宾
威 望:42
帖 子:4881
专家分:671
注 册:2007-2-9
收藏
得分:0 
嗯,楼上说得好。

也没必要循环到一半,循环到算数平方根(向下取整)即可。数学上能证明的。
2008-09-05 21:45
werty_sy
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2008-6-22
收藏
得分:0 
谢谢你们,现在彻底懂了
2008-09-06 09:11
punisher106
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2008-8-13
收藏
得分:0 
对哦,不不好意思,我弄措了,到平方根就可以了。
2008-09-07 15:45
快速回复:求助 素数的简单问题
数据加载中...
 
   



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

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