VB程序关于素数的问题,急!!!!

来源:百度知道 编辑:UC知道 时间:2024/05/16 15:47:12
Dim N %, I%, K%
N = Val(InputBox("N=?"))
K= Int(Sqr(N))
For I = 2 To K
If N Mod I = 0 Then Exit For
Next I
If I>K Then
Print N; " 是素数"
Else
Print N; " 不是素数"
End If

这个是一段程序代码,里面的“If I>K Then
Print N; " 是素数"
Else
Print N; " 不是素数"
”是什么意思?我怎么看到这就看不明白了呢?请教高人指点!!!

因为这个程序代码是运用“n不可能被大于Sqr(N)整除”的算法思想,所以退出循环体后要进行判断i和Sqr(N)之间的大小关系

看来楼主并没有理解FOR...NEXT 循环的特点。
注意看
K= Int(Sqr(N))
For I = 2 To K
If N Mod I = 0 Then Exit For
Next I
//这里当I从2循环到K,如果没有遇到中间的N Mod I(即为素数),也就是整个FOR是完整的循环完毕的,那么next之后的I的值其实并不等于K,而是等于K+1,这个时候用这个条件

If I>K Then
Print N; " 是素数"

来判定是否为素数就讲得通了

举个例字,就以楼主的代码过程为例

1.如果值更改为
N = 9
For I = 2 To 3
If N Mod I = 0 Then Exit For
Next I
'这里虽然似乎也是循环完毕的,但是在中间遇到了exit for这个事件,所以并没有经过next,即I的值在依然保持为3

2.如果再将值更改为
N = 11 'N的值为7也可以,只要是素数
For I = 2 To 3
If N Mod I = 0 Then Exit For
Next I
'这里也是循环完毕的,但是I的值在Next后就为4了,因为这里跳出FOR循环的原因不是因为Exit For,而是因为循环自然完成,经过了后面的next I,即I会因为next事件而在原有基础上增加1,即I=3+1=4