| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
学习型 ASP/PHP/ASP.NET 主机 35元/年全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付
赛孚耐:软件保护加密专家身份认证令牌USB KEY  
共有 434 人关注过本帖
标题:【一个素数的问题,很奇怪,头想大了也想不明白】
收藏  订阅  推荐  打印 
sheqingyun
Rank: 1
等级:新手上路
帖子:5
积分:150
注册:2006-10-19
【一个素数的问题,很奇怪,头想大了也想不明白】

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim n, i, x, y As Integer
n = TextBox1.Text
y = 0
For i = 0 To n
For x = 2 To i - 1
If Int(i / x) = i / x Then Exit For
Next
If x = i Then
Label1.Text = Label1.Text & i
End If
Next
End Sub


我觉得 IF 后面的语句应该执行不了,X不可能等于 i 的,但程序能通过,执行没问题
还有就是我把 i-1 换成 i 结果一样,那这个 i-1怎么解释
搜索更多相关主题的帖子: 素数  For  Then  
2007-5-24 15:00
从小到大
Rank: 3Rank: 3
等级:中级会员
威望:2
帖子:200
积分:2100
注册:2006-6-24

素数就是除了1和他本身可以整除  其他数都不可以整除 
所以是i-1
为什么不能等于i
循环的执行顺序是当 x=i-1后判断Int(i / x) = i / x 不符合的话 先执行x++ x=i
再判断x是不是小于i-1不符合 跳出

说的不清楚 


2007-5-24 15:07
Kendy123456
Rank: 12Rank: 12Rank: 12
等级:贵宾
威望:62
帖子:2694
积分:27044
注册:2007-1-3

首先给你说说for 循环的原理
for x =2 to i - 1
next

这个for循环当x = i -1 的时候 会继续执行循环体内的语句 然后再把x + 1, 这时候x就等于i 了! 然后循环条件判断x > i -1, 就不执行for 循环内的语句了,然而此时if语句的判断x=i是成立的 所以会被执行到
你设个断点看一下就知道了

For i = 0 To n
For x = 2 To i - 1
If Int(i / x) = i / x Then Exit For
Next
If x = i Then
Label1.Text = Label1.Text & i
End If
Next
这段代码其实很清楚 每次 x 增加1, 都会看看是否是质数; 如果是质数 (x = i), 那么就把这个数加到标签上去(带个空格会看得更清楚). 也就是说 每经过一个质数 if x = i 里面都会被执行到一次.

至于i-1 怎么解释, 你判断一个数是否质数, 并不需要验证这个数本身, 所以i-1就够了 (实际上 i / 2 就够了!) 一个数如果不能被他一半以内的数整除 它就是质数!

2007-5-24 15:26
sheqingyun
Rank: 1
等级:新手上路
帖子:5
积分:150
注册:2006-10-19

这下清楚了
谢谢楼上两位

2007-5-24 16:36
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

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