| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1023 人关注过本帖
标题:【一个素数的问题,很奇怪,头想大了也想不明白】
只看楼主 加入收藏
sheqingyun
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2006-10-19
收藏
 问题点数:0 回复次数:3 
【一个素数的问题,很奇怪,头想大了也想不明白】
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-05-24 15:00
从小到大
Rank: 1
等 级:新手上路
威 望:2
帖 子:200
专家分:0
注 册:2006-6-24
收藏
得分:0 

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

说的不清楚 


2007-05-24 15:07
Kendy123456
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:62
帖 子:2720
专家分:0
注 册:2007-1-3
收藏
得分:0 
首先给你说说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-05-24 15:26
sheqingyun
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2006-10-19
收藏
得分:0 

这下清楚了
谢谢楼上两位

2007-05-24 16:36
快速回复:【一个素数的问题,很奇怪,头想大了也想不明白】
数据加载中...
 
   



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

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