Golang 从数组中找到质数

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

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程