中医血液病学深圳:很短的vb程序,其中有一小处不明,请提示.30分!!!急!!

来源:百度文库 编辑:杭州交通信息网 时间:2024/05/09 06:37:10
Function isprime(a As Integer) As Boolean
Dim j As Integer
isprime = False
For j = 2 To a / 2
If a Mod j = 0 Then Exit For
Next j
If j > a / 2 Then isprime = True
End Function
如上的程序 是一个判断a是否为素数的程序其中的
j > a / 2怎解?请赐教
在前面
For j = 2 To a / 2
If a Mod j = 0 Then Exit For
Next j
中不是已经跳出循环了么?那后面j>a/2中j的值是什么呀?

因为在做循环的时候范围从2到a/2,只有当a%j为0时才终止循环,如果循环结束都没有满足条件,则此时的j一定大于等于a/2,而且没有除1和本身以外的数可以整除a,a为素数。

例如17,循环为从1到8,循环结束时j为9,满足条件为素数。

对,但跳出的时候j的值保留下来的,再在If j > a / 2 Then isprime = True 中判断

j > a/2 说明是 for 循环全部循环完而中途没有因为 a mod j = 0 而退出,从而区分是因为找到可以被整除的而结束循环,还是由于所有的数都试完而结束循环。