方法一:
一個數n是素數的條件:不能被2 ~ n-1整除
用For…….Next語句
Dim I as Integer,N As Integer
N=val(InputBox(""))
For I=2 to N-1
If N Mod I=0 Then Exit For "如果能被2 ~ N-1中任何一個數整除,則不是素數,跳出For迴圈
Next I
If I >= N Then"如果正常跳出For迴圈,則I跳出迴圈For後的值應該是N,所以滿足這個條件
Print N & "是素數"
Else
Print N & "不是素數"
End If
方法二:(一般都是用這種方法)
一個數n是素數的條件:不能被2 ~ Sqr(n)整除,數學上可以證明
1、用For…….Next語句
For I=2 to int(Sqr(N))
If N Mod I=0 Then Exit For
If I >int(Sqr(N)) Then
6、 用While….Wend迴圈
Dim I As Integer, N As Integer
N = Val(InputBox(""))
I = 2
c = Int(Sqr(N))
Do While I <= c
If N Mod I = 0 Then Exit Do
I = I + 1 "在For以外的
Loop
If I > c Then
e.g.:請輸出3~100之間的所有素數。
只要在判斷上述判斷素數的方法外加一個For N=3 To 100………Next N,如使用方法二,如下:
For N = 3 To 100 "3~100
For I = 2 To Int(Sqr(N))
If N Mod I = 0 Then Exit For
If I > Int(Sqr(N)) Then
else
Next N "3~100
e.g.:判斷100~200的所有偶數可以分解為兩個素數之和。
Function nf(n As Integer) As Boolean "判斷n是否為素數
Dim s As Boolean
Dim I As Integer
s = False
For I = 2 To Int(Sqr(n)) "如果能被2 ~Int(Sqr(n))中任何一個數整除,則不是素數,跳出For迴圈
If n Mod I = 0 Then
Exit For
If I > Int(Sqr(n)) Then "如果正常跳出For迴圈,則I跳出迴圈For後的值應該是N,所以滿足這個條件
s = True "當I是素數時s=true
nf = s "當I是素數時, nf=true,否則 nf=false
End Function
Private Sub form_click()
Dim t As Boolean
Dim q As Boolean
Dim j As Integer
Dim a As Integer
For I = 100 To 200 Step 2
For j = 2 To I / 2 "I一定可分解為一個大於它一半的數和小於它一半的數
t = nf(j) "呼叫Funtion(函式)nf,判斷i是否是素數,把nf的值(true或flase)賦值給變數t
If t = True Then "如果t是true 就往下執行,否則就執行到 End if(2)後面的next j語句
q = nf(I - j) "呼叫Funtion(函式)nf,判斷i-j是否是素數,把nf的值(true或flase)賦值給變數q
If q = True Then "如果q是true(說明i-j是素數) 就往下執行,否則就跳到 End if(1),繼續執行j迴圈
Print j, I - j "當q是true和t是True同時滿足時,說明I的確能分解為兩個素數,就打出 j 和 I-j 的值
Exit For "跳出j迴圈,判斷下一個偶數
End If "(1)
End If "(2)
Next j
End Sub
方法一:
一個數n是素數的條件:不能被2 ~ n-1整除
用For…….Next語句
Dim I as Integer,N As Integer
N=val(InputBox(""))
For I=2 to N-1
If N Mod I=0 Then Exit For "如果能被2 ~ N-1中任何一個數整除,則不是素數,跳出For迴圈
Next I
If I >= N Then"如果正常跳出For迴圈,則I跳出迴圈For後的值應該是N,所以滿足這個條件
Print N & "是素數"
Else
Print N & "不是素數"
End If
方法二:(一般都是用這種方法)
一個數n是素數的條件:不能被2 ~ Sqr(n)整除,數學上可以證明
1、用For…….Next語句
Dim I as Integer,N As Integer
N=val(InputBox(""))
For I=2 to int(Sqr(N))
If N Mod I=0 Then Exit For
Next I
If I >int(Sqr(N)) Then
Print N & "是素數"
Else
Print N & "不是素數"
End If
6、 用While….Wend迴圈
Dim I As Integer, N As Integer
N = Val(InputBox(""))
I = 2
c = Int(Sqr(N))
Do While I <= c
If N Mod I = 0 Then Exit Do
I = I + 1 "在For以外的
Loop
If I > c Then
Print N & "是素數"
Else
Print N & "不是素數"
End If
e.g.:請輸出3~100之間的所有素數。
只要在判斷上述判斷素數的方法外加一個For N=3 To 100………Next N,如使用方法二,如下:
For N = 3 To 100 "3~100
For I = 2 To Int(Sqr(N))
If N Mod I = 0 Then Exit For
Next I
If I > Int(Sqr(N)) Then
Print N & "是素數"
else
Print N & "不是素數"
End If
Next N "3~100
e.g.:判斷100~200的所有偶數可以分解為兩個素數之和。
Function nf(n As Integer) As Boolean "判斷n是否為素數
Dim s As Boolean
Dim I As Integer
s = False
For I = 2 To Int(Sqr(n)) "如果能被2 ~Int(Sqr(n))中任何一個數整除,則不是素數,跳出For迴圈
If n Mod I = 0 Then
Exit For
End If
Next I
If I > Int(Sqr(n)) Then "如果正常跳出For迴圈,則I跳出迴圈For後的值應該是N,所以滿足這個條件
s = True "當I是素數時s=true
End If
nf = s "當I是素數時, nf=true,否則 nf=false
End Function
Private Sub form_click()
Dim t As Boolean
Dim q As Boolean
Dim I As Integer
Dim j As Integer
Dim a As Integer
For I = 100 To 200 Step 2
For j = 2 To I / 2 "I一定可分解為一個大於它一半的數和小於它一半的數
t = nf(j) "呼叫Funtion(函式)nf,判斷i是否是素數,把nf的值(true或flase)賦值給變數t
If t = True Then "如果t是true 就往下執行,否則就執行到 End if(2)後面的next j語句
q = nf(I - j) "呼叫Funtion(函式)nf,判斷i-j是否是素數,把nf的值(true或flase)賦值給變數q
If q = True Then "如果q是true(說明i-j是素數) 就往下執行,否則就跳到 End if(1),繼續執行j迴圈
Print j, I - j "當q是true和t是True同時滿足時,說明I的確能分解為兩個素數,就打出 j 和 I-j 的值
Exit For "跳出j迴圈,判斷下一個偶數
End If "(1)
End If "(2)
Next j
Next I
End Sub