VB问题 新手 谢谢

来源:百度知道 编辑:UC知道 时间:2024/06/23 18:04:04
n = Val(InputBox(""))
For i = 2 To Int(Sqr(n))
If n Mod i = o Then Exit For
Next i
If i > Int(Sqr(n)) Then
Print n & "是素数"
Else
Print n & "不是素数"
End If
End Sub
程序没问题 但是就是不理解为什么i > Int(Sqr(n))这段
好像i最大也就刚好等于Int(Sqr(n))吧

因为判断一个数是不是素数,就看这个数是不是两个数的乘积,或者说能不能被小于他的数整除,如果是则不是素数,反之,则是素数
由于两个数相乘,因此当乘数大于积的平方根时,实际上,就是乘数与被乘数交换了下位置,被乘数的值变成了被乘数了,因此从乘数的值等于积的平方根开始,就又在重复以前的工作,所以就不需要重复这部分工作了。

你要好好理解 for-next循环中循环变量的变化:循环变量在Next处i=i+step的数值,再和退出条件比较判断是超出到终值 条件,如果是就退出。
所以在这里,i= Int(Sqr(n)) 是终值,继续,i= Int(Sqr(n)) +1才退出