求素数里的一点问题

来源:百度知道 编辑:UC知道 时间:2024/06/23 01:33:00
Private Function isprime(i) As Boolean

For j = 2 To i - 1
If i Mod j = 0 Then
Exit For '当i有可以整除的因子时(即i不是素数时),跳出内层循环,判断下一个数
End If
Next j

If j = i Then
isprime = True '当循环进行到最后 也没跳出时 即i没有可以整除的因子时(即i是素数时),输出i
End If

End Function

Private Sub Command1_Click()
For i = 1 To 100
If isprime(i) And isprime(i + 2) Then
Print i; i + 2
End If
Next
End Sub

这个程序里 For j = 2 To i - 1
If i Mod j = 0 Then
Exit For
是不是当I=8时 然后J=2 TO 7 只要2到7有一个与8公约数为零就行吗??为什么不是当i=8时 与8-1=7 8mod7比较呢?

不是公约数=0.。。公约数怎么可能=0
判断素数不包括1,所以从2
从2到i-1里边,如果有一个数可以被i整除(即 i mod j =0),说明除了1和i本身,还有其他因数。以此判断i不是素数。

其实j不必从2到i-1
从2 到 int(sqr(i))就行。