Go 語言程式,用於查詢陣列中的素數
在本教程中,我們將展示如何使用不同的示例從陣列中查詢素數。素數是指只能被 1 或自身整除的數,它們除了這兩個因子之外沒有其他因子。現在,我們將向您展示一些示例,以幫助您瞭解此程式背後的邏輯。
方法 1:在主函式中查詢素數
在這種特定方法中,我們將藉助巢狀 for 迴圈列印素數。在每次內部迭代中,我們將陣列元素減半,並檢查它們是否可以被其他數字整除。讓我們來看一看並理解它。
演算法
步驟 1 − 建立一個包 main,並在程式中匯入 fmt 包。
步驟 2 − 建立一個 main 函式來執行程式,並在 main 函式中進一步建立一個數組,從中搜索素數。
步驟 3 − 在 main 中建立一個名為 flag 的變數,初始值為 0。
步驟 4 − 執行一個迴圈,從 i=2 到 i<=len(arr)-1,此迴圈為外迴圈,j=2 到 j<arr[i]/2 為內迴圈,內迴圈將在外迴圈的每次迭代中執行。
步驟 5 − 當外迴圈開始時初始化 flag=0,並在內迴圈的第一次迭代中檢查 arr[i]%j==0。
步驟 6 − 如果條件滿足,則將 flag 設定為 1 並中斷迴圈,因為如果元素在其一半之前不可被整除,則它將不會被任何其他數字在前面整除。
步驟 7 − 執行迴圈直到它終止,如果在任何迭代中條件不滿足,則在迴圈外部檢查一個條件,如果 flag 等於 0 或陣列元素大於 1。
步驟 8 − 如果發現此條件為真,則表示該元素是素數,因此列印它。
步驟 9 − 使用 fmt.printf() 函式執行列印語句,其中包含 %d,用於列印陣列元素。
示例
Go 語言程式,透過在主函式中將陣列元素減半來查詢素數
package main import "fmt" func main() { arr := [6]int{10, 11, 12, 13, 65, 73} fmt.Println("The array elements are: ", arr) var flag int = 0 fmt.Printf("Prime Numbers: \n") for i := 0; i <= len(arr)-1; i++ { flag = 0 for j := 2; j < arr[i]/2; j++ { if arr[i]%j == 0 { flag = 1 break } } if flag == 0 && arr[i] > 1 { fmt.Printf("%d ", arr[i]) } } }
輸出
The array elements are: [10 11 12 13 65 73] Prime Numbers: 11 13 73
方法 2:在使用者定義函式中使用平方根
在這種方法中,我們將建立一個外部函式,並將範圍作為引數,然後將使用 sqrt 函式查詢元素的平方根,從中我們可以檢查數字是否可以被該範圍內的數字整除。讓我們來看一看,瞭解更多資訊。
演算法
步驟 1 − 建立一個包 main,並在程式中匯入 fmt 和 math 包。
步驟 2 − 建立一個名為 printPrimeNumbers 的函式,其引數 num1 和 num2 表示要從中搜索素數的範圍。
步驟 3 − 在函式中檢查條件,即範圍 num1 小於 2 且 num 也小於 2,如果條件滿足,則列印數字大於 2 並返回。
步驟 4 − 執行一個迴圈,直到 num1<=num2 將 isprime 標誌設定為 true,並執行一個內部迴圈,從 i=0 到 i <= int(math.Sqrt(float64(num1))),其中 sqrt 用於查詢陣列元素的平方根。
步驟 5 − 檢查條件,如果 num1 可被整除,則將 isprime 設定為 false,中斷迴圈並增加 num1 的值。
步驟 6 − 但是,如果在任何迭代中條件不滿足,則迴圈終止並列印素數。
步驟 7 − 從 main 中呼叫函式,並將範圍元素作為引數。
步驟 8 − 使用 fmt.Println() 函式執行列印語句。
示例
Go 語言程式,使用使用者建立函式中的 sqrt 函式從陣列中查詢素數
package main import ( "fmt" "math" ) func printPrimeNumbers(num1, num2 int) { if num1 < 2 || num2 < 2 { fmt.Println("Numbers must be greater than 2.") return } for num1 <= num2 { isPrime := true for i := 2; i <= int(math.Sqrt(float64(num1))); i++ { if num1%i == 0 { isPrime = false break } } if isPrime { fmt.Printf("%d ", num1) } num1++ } } func main() { var range1 int = 4 var range2 int = 100 fmt.Println("The range from which prime numbers have to be searched is from", range1, "to", range2) fmt.Println("The following prime numbers are: ") printPrimeNumbers(4, 100) }
輸出
The range from which prime numbers have to be searched is from 4 to 100 The following prime numbers are: 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
結論
在上述教程中,我們使用兩種方法在陣列中搜索素數。在第一種方法中,我們使用了主函式,其中我們將陣列元素減半並搜尋素數。在第二種方法中,我們使用了一個帶有 sqrt 方法的外部函式來查詢陣列元素的平方根並列印素數。因此,所有方法都成功執行。