簡體   English   中英

如何使用單參數Python遞歸確定素數

[英]How to determine prime number using recursion with single parameter Python

我正在嘗試創建一個函數來確定一個數字是否為質數。 但是,我只能在函數中使用一個參數。 這是我到目前為止所擁有的,但我不確定如何進行遞歸部分以使其返回正確的值。

問題是“寫一個遞歸函數“IsPrime(x)”來判斷x(一個正整數)是否是素數,如果是素數,則返回True;否則返回False。基本思想是對於所有x >= 3,如果x不能被任何小於或等於sqrt(x)的素數整除,則它是素數。同樣,不要使用內置的Python函數。而是編寫自己的代碼來實現它。”

def IsPrime(x):
    if x == 1:
        return False
    elif x == 2:
        return True
    else:
        return IsPrime(math.floor(math.sqrt(x)))

這當然不是查找素數的最有效方法,但可以通過將您在問題中描述的“基本思想”轉換為算法來使用遞歸來完成:

  • 如果 x >= 3,則遍歷從 2 到 sqrt(x) 的所有整數 i:
    • 檢查 i 是否為素數(遞歸使用此函數)。
      • 如果是,請檢查 x 是否可以被 i 整除。
        • 如果是,則 x 不是素數(退出函數)。
        • 如果沒有,請繼續。
      • 如果沒有,請繼續。
  • 如果我們已經遍歷了所有的 i 並且函數仍在運行,那么 x 不能被任何一個質數 i 整除,所以 x 是一個質數。
import math

def IsPrime(x):
    if x == 1:
        return False
    if x == 2:
        return True
    for i in range(2, math.floor(math.sqrt(x)) + 1):
        if IsPrime(i):
            if x % i == 0:
                return False
    return True

請注意,無論何時到達return語句,函數的執行都會終止。 例如,這允許我們省略顯式的else語句。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM