Dim n As Integer, i As Integer
n = Val(InputBox("输入一个大于耐脊坦1的正整数"))
For i = 2 To n - 1
If n Mod i = 0 Then Exit For
Next i
If i >n - 1 Then
Print n"是质数"野枝
Else
Print n"不昌桐是质数"
End If
End Sub
原则上是要判断是否能被一个不是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
楼上回答的不错,不过没有你要的180=2^2*2^2*5的输出,呵呵,这个提示挺有意思的,我没做过,心里有点痒痒。一会我去职耐巧皮称考试,还有半个小时时间,帮你试宽悉一试吧昌差,不然我老合计这个。。。dim iInput as long, iVal as long
dim iPos as long
dim sResult as string, iPower as long
iInput=abs(val(inputbox("请输入一个正整数")))
iVal=iInput
iPos=2
iPower=0
sResult=""
do while iPos<iVal or (iPos=iVal and not iInput=iVal)
if iVal Mod iPos=0 then
if iPower=0 then
if sResult<>"" then sResult=sResult &"*"
sResult=sResult &iPos
end if
iPower=iPower+1 '记录这是几次方
iVal=iVal\iPos
else
if iPower>1 then sResult=sResult &"^" &cstr(iPower) '1次方以上要记录^n
iPower=0
iPos=iPos+1
end if
loop
if sResult="" then
Picture1.print "这个数是质数"
else
sResult=iInput &"=" &sResult
if iPower>1 then sResult=sResult &"^" &cstr(iPower)
if iVal>1 then sResult=sResult &"*" &iVal
Picture1.print sResult
end if
'把这些代码粘贴到一个事件里使用,例如一个按钮的Click事件里。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)