vb素數的演算法
『壹』 vb求100以內的素數
代碼:
Private Sub Command1_Click()
Me.Cls
Dim yn As Boolean '為真表示是素數
Dim i As Integer, j As Integer, x As Integer
For i = 1 To 100
yn = True '為真表示是素數,否則就不是,先默認為是素數
For j = 2 To i - 1 '素數要大小1,所以循環從2開始,素數不包括本身,所以循環終值減小1
If i Mod j = 0 Then yn = False '如果能整除就不是素數
Next j
If yn = True Then Print i; '如是素數,就在窗體上輸出素數
Next i
End Sub
運行效果:
(1)vb素數的演算法擴展閱讀:
print用法
print(x,y)
等價於
import sys
sys.stdout.write(str(x)+''+str(y)+' ')
從語法上講,調用python3.0的print函數有如下的形式:
print([object,...][,seq=''][,end=' '][,file=sys.stdout])
seq是在每個對象的文本之間插入一個字元串,如果沒有樁底的話,它默認是一個單個空格,傳遞一個空字元串將會一直分隔符
end是添加在列印文本末尾的一個字元串,如果滅有傳遞的話,它默認的是一個 換行字元。傳遞一個控制符串將會避免在列印的文本的末尾移動到下一個輸入行-----下一個print將會保持添加到當前輸出行的末尾。
file指定了文本將要發送到的文件、標准流或者其他類似文件的對象;如果沒有傳遞的話,它默認的是sys.stdout。帶有一個類似文件的write(string)方法的任何對象都可以傳遞,但真正的文件應該已經為了輸出而打開。
『貳』 vb求素數
Private Function CheckNaturalNum(ByVal iParam As Integer) As Boolean
'質數又稱素數。指在一個大於1的自然數中,除了1和此整數自身外,沒法被其他自然數整除的數。
'換句話說,只有兩個正因數(1和自己)的自然數即為素數。比1大但不是素數的數稱為合數。
'1和0既非素數也非合數。
If iParam <= 1 Then
CheckNaturalNum = False
Exit Function
End If
CheckNaturalNum = True
For iCount = 2 To iParam - 1
If iParam Mod iCount = 0 Then
CheckNaturalNum = False
Exit For
End If
Next
End Function
'// 調用示例
MsgBox CheckNaturalNum(Val(InputBox("", "輸入1個整數")))
==================================
Public Function CheckNaturalNum(ByVal n As Integer) As Boolean
CheckNaturalNum = False
k = Int(Sqr(n))
For i = 2 To k
If n Mod i = 0 Then
Exit For
End If
Next
If i > k Then
CheckNaturalNum = True
End If
End Function
『叄』 VB中求素數
'給你來100萬個數試一下速度如何,結果在數組中,由於數量太多就不給你列印了,自己理解一下
Option Explicit
Const N As Long = 1000000
Private Sub Command1_Click()
Dim i As Long, j As Long, flag() As Integer, arr() As Long, c As Long, t
ReDim flag(N), arr(N)
t = Timer
For i = 2 To Sqr(N)
If flag(i) = 0 Then
For j = 2 * i To N Step i
flag(j) = 1
Next
End If
Next
For i = 2 To N
If flag(i) = 0 Then
arr(c) = i
c = c + 1
End If
Next
ReDim Preserve arr(c - 1) '存放素數的數組
MsgBox "用時:" & Format(Timer - t, "0.00") & vbNewLine & "個數:" & c
End Sub
『肆』 vb判斷素數
正確程序如下(可以通過比較尋找自己的錯誤):
Private Sub Command1_Click()
X = Text1.Text
For i = 2 To X - 1
If X Mod i = 0 Then
F = 1
Exit For
End If
Next i
If F = 1 Then
Label2.Caption = "你輸入的數是" & X & ",該數不是素數。"
Else
Label2.Caption = "你輸入的數是" & X & ",該數是素數。"
End If
End Sub
(4)vb素數的演算法擴展閱讀:
質數(prime number)又稱素數,有無限個。一個大於1的自然數,除了1和它本身外,不能被其他自然數整除,換句話說就是該數除了1和它本身以外不再有其他的因數;否則稱為合數。
根據算術基本定理,每一個比1大的整數,要麼本身是一個質數,要麼可以寫成一系列質數的乘積;而且如果不考慮這些質數在乘積中的順序,那麼寫出來的形式是唯一的。最小的質數是2。
目前為止,人們未找到一個公式可求出所有質數。
2016年1月,發現世界上迄今為止最大的質數,長達2233萬位,如果用普通字型大小將它列印出來長度將超過65公里。
『伍』 VB怎樣找素數
素數的定義:如果一個數的因數只有1和它自身,那麼它就是素數你說找出一個大於或等於該數的第一個素數 那隻有素數它本身了 如果還有的話 那它就不是素數了Dim a As Integer, b As Integer, i As Integer
a = InputBox("請輸入一個純數字", "輸入")
i = 2
Do While i <= Int(Sqr(a))
If a Mod i = 0 Then Exit Do
i = i + 1
Loop
If i = Int(Sqr(a)) + 1 Then
MsgBox "第一個素數:1 " & vbCrLf & "第二個素數: " & a
Else
MsgBox "非素數"
End If