回覆列表
  • 1 # 手機使用者86764182260

    方法一:

    一個數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

  • 中秋節和大豐收的關聯?
  • 大家買車險都買哪些專案?