Golang 从数组中找到质数
在本教程中,我们将展示如何使用不同的示例从数组中找到质数。质数是只能被1或本身整除的数字。现在我们将为您呈现一些示例,以帮助您清楚地理解此程序背后的逻辑。
方法1:在main函数中查找质数
在这种特定的方法中,我们将使用嵌套的for循环来打印质数。我们将在每次内部迭代中将数组元素减半,并检查它们是否能够被其他数字整除。让我们来看一下并理解它。
步骤
步骤1 − 在程序中创建主要的包并导入fmt包。
步骤2 − 创建一个主函数来执行程序,并在主函数内部创建一个数组,其中包含要搜索的质数。
步骤3 − 在主函数内部创建一个名为flag的变量,并将其初始值设为0。
步骤4 − 运行一个循环从i=2到i<=len(arr)-1,其中这个循环是一个外部循环,j=2到j
步骤5 − 在外部循环开始时将flag=0初始化,并在内部循环的第一次迭代中检查arr[i]%j0。
步骤6 − 如果条件满足,将flag设置为1并退出循环,因为如果元素在其一半之前无法被整除,它在之后也无法被任何其他数字整除。
步骤7 − 执行循环直到终止,如果在任何迭代中条件不满足,则在循环外检查一个条件,即flag等于0或数组元素大于1。
步骤8 − 如果发现此条件为真,则意味着该元素是一个质数,因此打印它。
步骤9 − 使用fmt.Printf()函数执行打印语句,其中包含用于打印数组元素的%d。
示例
通过在主函数中处理数组元素的一半来查找质数的Golang程序
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 - 在主函数中使用范围元素作为参数调用该函数。
步骤8 - 使用fmt.Println()函数执行打印语句。
示例
使用平方根函数在用户定义函数中从数组中查找素数的Golang程序。
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
结论
在上述教程中,我们使用了两种方法在数组中搜索素数。在第一种方法中,我们使用了主函数,通过将数组元素除以2并搜索素数。在第二种方法中,我们使用了一个带有sqrt方法的外部函数,找到数组元素的平方根并打印素数。因此,所有方法都成功执行。