原则上是要判断是否能被一个不是1和本身的数整除。
简单的方法是从2到本身-1的数做为除数进行循环不,逐一判断能否整除,出现整除情况即断定非质数。但这种方法的计算量较大,因为有些数是明显不用的,如大于本身2分之一的,处于3分之一到2分之一之间的,等等。
优化的方法是:
Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim num As Integer
Dim i As Integer = 2
If IsNumeric(TextBox1.Text) Then
num = CInt(TextBox1.Text)
Dim j As Integer = num
If num > 2 Then
While i < j
Dim k As Integer = num / i
Dim a As Double = CDbl(num) / CDbl(i)
If System.Math.Abs(a - k) < 1.0E-20 Then
Label1.Text = num.ToString + "不是质数"
Exit While
Else
j = CInt(a) + 1
i += 1
End If
End While
If i >= j Then
Label1.Text = num.ToString + "是质数"
End If
ElseIf num = 2 Then
Label1.Text = num.ToString + "是质数"
End If
Else
Label1.Text = "输入数据有误"
End If
End Sub
Private Sub Command1_Click()
Dim x, i, f As Boolean
x = InputBox("请输入一个数", , 51)
For i = 2 To Sqr(x)
If x Mod i = 0 Then
f = True
Exit For
End If
Next
If Not f Then
MsgBox "是素数"
Else
MsgBox "非素数"
End If
End Sub
子Command1_Click()
点心T为龙,TT一样长,TTT,只要,S作为字符串
S =输入框(“请输入一个判断素数”,“”) T = VAL(S)
TT = 2
TTT = INT(SQR(T))
如果PSS(T,TT,TTT),然后
MSGBOX“输入号码“CSTR(T)”是一个素数“,”
其他
MSGBOX“输入号码”和CSTR(T)&“不是素数”,“
结束如果
END SUB
专用功能PSS(为ByRef一个一样长,为ByRef B为长,作为长期的ByRef)作为布尔
如果B <= C,然后
A MOD B = 0,然后
PSS = FALSE
其他
PSS PSS(A,B +,C)
结束如果
其他
PSS =真端的功能
如果