vb中判断质数的程序

vb中判断质数的程序,第1张

Private Sub Command1_Click()

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事件里。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12526076.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存