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 方法的外部函式來查詢陣列元素的平方根並列印素數。因此,所有方法都成功執行。
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP