如何使用 Go 语言中的递归判断给定数字是否为素数?
在数学中,有一些数字只能被 1 或自身整除,这些数字被称为素数。例如,2、3、5、7 等。在编程中,我们可以创建一个程序来检查一个数字是否为素数。在本文中,我们将使用递归的概念,即在函数中调用函数,来创建一个程序来检查数字是否为素数。
示例 1
在这个例子中,我们将创建一个带有两个参数的递归函数,一个是数字,另一个是除数。数字是我们需要检查是否为素数的数字,除数由数字 - 1 初始化。然后在每次函数调用中,我们将检查数字 % 除数是否为 0,并减少除数的值。如果在任何时候数字可以被除数整除,那么我们将返回 false,否则在最后除数达到 1 时返回 false。
算法
步骤 1:使用 import 关键字在顶部导入所需的包。
步骤 2:然后 main 函数将首先运行。
首先,我们声明 int 变量并初始化它。
现在我们在创建一个 if 条件,在其中首先检查数字是否为 1。如果不是,则通过传递数字和除数作为参数来调用 isPrime() 函数。
根据 if 条件,我们打印结果。
步骤 3
在 isPrime() 函数中,我们有一个基本条件,即除数是否为零。
然后我们找到一个余数,它是否为零。
然后我们通过将除数减少 1 来调用 isPrime() 函数。
示例
package main import ( // fmt package provides the function to print anything "fmt" ) // declare the function with int type parameters and bool return type func isPrime(number, divisor int) bool { // if the divisor reached 1 returning true if divisor == 1 { return true } // if the number is divisible by any number in between 1 and number them returning false if number%divisor == 0 { return false } // calling the function by reducing the divisor by 1 return isPrime(number, divisor-1) } func main() { // declaring the number variable of the int type var number int fmt.Println("Golang program to find whether the number is prime or not using recursion.") // initializing the number that we want to check is prime or not number = 7 // starting the if the condition that is checking that number is greater than 1 or not // also calling isPrime() number that is checking whether the number is prime or not // && is an operator in which if both the condition on the right and left are true then //Only we will go inside if block if number > 1 && isPrime(number, number-1) { fmt.Println("The number", number, "is a prime number.") } else { fmt.Println("The number", number, "is not a prime number.") } }
输出
Golang program to find whether the number is prime or not using recursion. The number 7 is a prime number.
结论
这就是我们如何使用递归函数来判断一个数字是否为素数。还有其他方法可以检查数字是否为素数,例如迭代方法或使用筛法。由于我们创建了一个单独的函数,因此可以说代码是可重用的。要了解更多关于 Go 语言的信息,您可以浏览这些 教程。
广告