写一个递归函数,它接受一个整数并返回 "True" 如果它的所有位数都是质数。

2024-10-01 13:39:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我必须编写一个Python递归函数,它以一个整数作为参数,如果它的所有数字都是质数,则返回True。 e、 g

    allPrime(976)
      False
    allPrime(357)
      True

这就是我目前所做的

^{pr2}$

Tags: falsetrue参数数字整数质数pr2allprime
2条回答

要做到这一点,你只需要提取最后一个数字,检查它是否是质数,然后继续剩下的数字。在

编写递归基本上由一个简单的例子和一个递归组成,在这个过程中,你把问题分解成一个更小的问题,直到你进入一个小的情况。在

因此,您需要做的是,找到不需要进一步递归的简单情况,并思考如何实现这一点:

#separate the number (123) into a last Digit (3) and the rest (12)
lastDigit = n % 10
rest = int(n / 10)

如果我们有一个非素数,我们可以返回False,并且不进一步递归:

^{pr2}$

琐碎部分只有一位数,因此非平凡部分是这个,我们在这里进行递归:

if n > 10:
    return allPrime(rest)

我们有一个例子,因为一个非素数而停止,我们有一个非平凡的例子 简单的情况也不需要递归,因为我们已经有了非素数的情况,我们只需要:

return True

总结一下:

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))
def allPrime(n):
    if n==0:
        return(True)
    elif (n%10) in [2,3,5,7]:
        return(allPrime(n//10))
    else:
        return(False)

相关问题 更多 >