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 方法的外部函数来查找数组元素的平方根并打印素数。因此,所有方法都成功执行。