python 用递归求质数_编写一个递归函数,它接受和整数,如果它的所有数字都是质数,则返回“True”...
要做到這一點,你只需要提取最后一個數(shù)字,檢查它是否是質(zhì)數(shù),然后繼續(xù)剩下的數(shù)字。在
編寫遞歸基本上由一個簡單的例子和一個遞歸組成,在這個過程中,你把問題分解成一個更小的問題,直到你進(jìn)入一個小的情況。在
因此,您需要做的是,找到不需要進(jìn)一步遞歸的簡單情況,并思考如何實現(xiàn)這一點:#separate the number (123) into a last Digit (3) and the rest (12)
lastDigit = n % 10
rest = int(n / 10)
如果我們有一個非素數(shù),我們可以返回False,并且不進(jìn)一步遞歸:
^{pr2}$
瑣碎部分只有一位數(shù),因此非平凡部分是這個,我們在這里進(jìn)行遞歸:if n > 10:
return allPrime(rest)
我們有一個例子,因為一個非素數(shù)而停止,我們有一個非平凡的例子
簡單的情況也不需要遞歸,因為我們已經(jīng)有了非素數(shù)的情況,我們只需要:return True
總結(jié)一下:def isPrime(n):
if n < 2: return False
if n == 2: return True
if n & 1 == 0: return False
for x in range(3, int(n ** 0.5)+1, 2):
if n % x == 0:
return False
return True
def allPrime(n):
lastDigit = n % 10
rest = int(n / 10)
if not isPrime(lastDigit):
return False
if n > 10:
return allPrime(rest)
return True
print(allPrime(9777))
print(allPrime(773))
總結(jié)
以上是生活随笔為你收集整理的python 用递归求质数_编写一个递归函数,它接受和整数,如果它的所有数字都是质数,则返回“True”...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java quartz 触发_手动触发Q
- 下一篇: java super()方法_Java