簡體   English   中英

Python RecursionError

[英]Python RecursionError

(我是一個完全的初學者)我想寫一個遞歸的 function 可以告訴我一個數字是否是質數:但我不斷收到相同的遞歸錯誤:這是我的代碼:


from math import *
def has_a_divider(n,p):
    if n%p==0:
        return True
    elif has_a_divider(n,(p-1))!= True:
        return False
    else:
        return False


def is_prime(a):
    if has_a_divider(a,sqrt(a))==False:
        return True
    else:
        return False

你的問題是sqrt(a)它返回一個浮點數而不是你的代碼需要的 int。
您可以將其替換為ceil(sqrt(a))以從中獲取 int 。

此外,此代碼不適用於查找數字是否為素數,因為所有數字都至少有 1 有一個分隔符。 一個可能的解決方案是更新has_a_divider以檢查大於 1 的分隔符。

一個可能的實現:

from math import ceil, sqrt
def has_a_divider(n,p):
    if p < 2:
        return False
    if n % p==0:
        return True
    return has_a_divider(n,(p-1))


def is_prime(a):
    if a == 1:
        return False

    return not has_a_divider(a,ceil(sqrt(a)))

print(is_prime(3))
print(is_prime(5))
print(is_prime(4))

暫無
暫無

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

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