在VB裡是素數的意思,在判斷一個數是否為素數的時候會用到~ "定義一個判斷x是否為素數的函式,判斷x是否為素數的方法是:如果x不能被從2到Int(Sqr(x))的數整除,那麼這個數就是素數"這裡的Prime是一個布林型變數,只不過沒有定義。可以加個Dim prime As BooleanPublic Function prime(x As Integer) k = Int(Sqr(x) + 0.5) For i = 2 To k If x Mod i = 0 Then "如果x能被這其中的一個數整除,x就不是素數 prime = False "所以Prime為假 Exit Function "如果一個數不是素數就退出Function過程 End If Next prime = ture "如果x都不能被被從2到Int(Sqr(x))的數整除,那麼這個數就是素數,即Prime為真 End Function 問題是:
2、這個函式不完善,比如2是素數,但引用這個函式判斷2的結果是2不是一個素數...給你一個能正確判斷一個數是否為素數的程式碼。Private Sub Command1_Click() Dim n%, IsPrime As Boolean IsPrime = True n = Val(InputBox("請輸入n的值")) If n = 1 Or (n <> 2 And n Mod 2 = 0) Then "1和偶數(除2以外)都不是素數 IsPrime = False ElseIf n = 2 Then "偶數的特例:2是素數 IsPrime = True Else "判斷奇數是不是素數 k = 3 Do Until k > Sqr(n) Or Not IsPrime If n Mod k = 0 Then IsPrime = False Else k = k + 2 End If Loop End If Print n & IIf(IsPrime, "是素數", "不是素數")End Sub
在VB裡是素數的意思,在判斷一個數是否為素數的時候會用到~ "定義一個判斷x是否為素數的函式,判斷x是否為素數的方法是:如果x不能被從2到Int(Sqr(x))的數整除,那麼這個數就是素數"這裡的Prime是一個布林型變數,只不過沒有定義。可以加個Dim prime As BooleanPublic Function prime(x As Integer) k = Int(Sqr(x) + 0.5) For i = 2 To k If x Mod i = 0 Then "如果x能被這其中的一個數整除,x就不是素數 prime = False "所以Prime為假 Exit Function "如果一個數不是素數就退出Function過程 End If Next prime = ture "如果x都不能被被從2到Int(Sqr(x))的數整除,那麼這個數就是素數,即Prime為真 End Function 問題是:
1、函式名已經為Prime了,變數名怎麼還可以是Prime?這樣引用函式的時候會出錯的,建議把Prime改為IsPrime
2、這個函式不完善,比如2是素數,但引用這個函式判斷2的結果是2不是一個素數...給你一個能正確判斷一個數是否為素數的程式碼。Private Sub Command1_Click() Dim n%, IsPrime As Boolean IsPrime = True n = Val(InputBox("請輸入n的值")) If n = 1 Or (n <> 2 And n Mod 2 = 0) Then "1和偶數(除2以外)都不是素數 IsPrime = False ElseIf n = 2 Then "偶數的特例:2是素數 IsPrime = True Else "判斷奇數是不是素數 k = 3 Do Until k > Sqr(n) Or Not IsPrime If n Mod k = 0 Then IsPrime = False Else k = k + 2 End If Loop End If Print n & IIf(IsPrime, "是素數", "不是素數")End Sub