如何使用 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 语言的信息,您可以浏览这些 教程

更新于:2023-07-10

191 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告