求VB编程代码:题目:判断一个数是否是素数?

谢谢!

判断素数的原理是:
素数是只能被1和本身整除的数。例如 3只能被1和3整除,17只能被1和17整除等等,想9就不是素数(能被1,3,9整除)。

编程的算法是:
穷举法,就是将需要判断的数除2、除3....一直除到这个数减1.
例如:判断7是不是素数的算法是进行如下运算 7/2,7/3,7/4,7/5,7/6,在上述除的过程中如果都不能被除尽则可以断定7是素数,否则就说明7不是素数。
注意:编程时使用求余运算,判断是否能被除尽。
参考程序如下:
dim i as integer
dim j as integer
dim x as integer
x=val(inputbox("请输入一个自然数:","输入提示"))
for i=2 to x-1
if x mod i=0 then exit for
next i
if i=x then '此处若i的值变为x则说明所以上面的循环全被执行完
print x & "是素数"
else
print x & "不是素数" '若i<x则说明循环的中途x就能被除尽了
endif

当然程序还可以被优化,例如不一定非除到n-1,完全可以除到根号下n,
举例一:判断25是不是素数的话,只需要除到5即可
举例二:对于开根后是小数的可以取整,如判断15是不是素数只需要除到3即可。
简化后的程序运行速度会更快的。
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-04-03
判断m是否为素数:
Private Sub Command1_Click()
Dim i&, m&, Tag As Boolean
m = Val(Text1)
Tag = True
For i = 2 To Sqr(m)…………注
If (m Mod i) = 0 Then Tag = False
Next i
If Tag Then
MsgBox m & "是素数", , "提示!"
Else: MsgBox m & " 不是素数", , "提示!"
End If
End Sub
注:这里用For i = 2 To m - 1的话,如果输入的数很大,比如1234567891,要等2分钟才能出结果:“1234567891是素数”,而用Sqr(m)的话则瞬间出结果。

参考资料:Visual Basic程序设计教程(第3版) 高等教育出版社 第83~84页

第2个回答  2009-04-03
Private Function check(i As Integer) As Boolean
For j = 2 To CInt(Sqr(i)) + 1 '从2循环到i的平方根
If i Mod j = 0 Then '如果i除以j的余数为0,说明i不是素数
check = False '返回false
Exit Function '退出本过程
End If
Next j
check = True '循环结束没有退出过程,说明i不能整除从2到i平方根的所有数,也就是说i是素数,返回true
End Function
第3个回答  2009-04-03
判断n是否是素数:
k=1
for i=2 to n-1
if n mod i=0 then
k=0
exit for
end if
next
if k=0 then
msgbox ("不是素数")
else
msgbox ("是素数")
end if
相似回答