| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付学习型 ASP/PHP/ASP.NET 主机 30元/年
高端软件开发 = 年薪十万不是梦赛孚耐:软件保护加密专家身份认证令牌USB KEY 
共有 248 人关注过本帖
标题:求助 素数的简单问题
收藏  订阅  推荐  打印 
werty_sy
Rank: 1
等级:新手上路
帖子:5
积分:162
注册:2008-6-22
求助 素数的简单问题

判断一个数是否为素数的过程中
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-9-5 09:54
multiple1902
Rank: 12Rank: 12Rank: 12
等级:版主
威望:40
帖子:4479
积分:45682
注册:2007-2-9

你for之后直接就next啊?结果不错就怪了。你用sqr结果能正确就怪了。因为照你这意思,居然是一个O(1)的判断素数算法。史上还没有这么强大的算法。费尔马小定理也是要多试几个数的。

再说了,sqr是平方吧?sqrt是平方根吧?

“高考”这个词在耳边不断萦绕,心中的激动不言而喻。写下一句话,一起努力。Let's struggle together.
2008-9-5 10:46
punisher106
Rank: 1
等级:新手上路
帖子:22
积分:330
注册:2008-8-13

素数也就是除了一和他本身之外,没有别的除数了的数。比如13 。判断方法一般是从二循环到该数的一半,先不管他是否能整除二。到底为什么要循到一半就不用说了吧,3×5和5×3都能证明他不是素数。
2008-9-5 11:08
werty_sy
Rank: 1
等级:新手上路
帖子:5
积分:162
注册:2008-6-22

for之后直接next可以的啊,然后用sqr(x)能算出正确结果的
punisher讲的明白了,原来要循环一半就可以了

谢谢你们
2008-9-5 12:34
punisher106
Rank: 1
等级:新手上路
帖子:22
积分:330
注册:2008-8-13

举个例子,比如判断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-9-5 18:58
multiple1902
Rank: 12Rank: 12Rank: 12
等级:版主
威望:40
帖子:4479
积分:45682
注册:2007-2-9

嗯,楼上说得好。

也没必要循环到一半,循环到算数平方根(向下取整)即可。数学上能证明的。

“高考”这个词在耳边不断萦绕,心中的激动不言而喻。写下一句话,一起努力。Let's struggle together.
2008-9-5 21:45
werty_sy
Rank: 1
等级:新手上路
帖子:5
积分:162
注册:2008-6-22

谢谢你们,现在彻底懂了
2008-9-6 09:11
punisher106
Rank: 1
等级:新手上路
帖子:22
积分:330
注册:2008-8-13

对哦,不不好意思,我弄措了,到平方根就可以了。
2008-9-7 15:45
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.057628 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved