我有一些代码可以检查一个数字是否为素数但是它表示每个2以上的数字都是素数,或者它有时会胜利。我无法想象我的代码有什么问题。我将发布到目前为止的内容。
Dim intNumber As Integer = Me.txtNumber.Text
Dim i As Integer
Select Case intNumber
Case Is < 2
Me.lblAnswer.Text = intNumber & " is not prime."
Case Is = 2
Me.lblAnswer.Text = intNumber & " is prime."
Case Is > 2
For i = 3 To (intNumber - 1)
If intNumber Mod i = 0 Then
Me.lblAnswer.Text = intNumber & " is not prime."
Else
Me.lblAnswer.Text = intNumber & " is prime."
End If
Next i
End Select
感谢您的帮助。
答案 0 :(得分:1)
因为你发现一个数字不是素数后你没有回来。所以它一直检查直到i-1并检查i-1 Mod i = 0是否永远不会。所以它说所有数字都是素数。
另外,你只需检查从2到sqrt(i)的素数是否分成i,看是否是素数。