Python:isPrime函数将打印太多的答案

2024-10-01 07:47:17 发布

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

问题是我的代码打印出来了

"The number you entered is prime"

很多时候取决于我输入的数字,然后是

"That number is not prime"

如果这个数不是素数。我知道它为什么要这样做(因为if语句不断循环返回for循环,直到找到一个等分的数字,然后打印“not prime”结果),但我要问的问题是如何修复它?你知道吗

def isprime(n):
try:
    npnc = "Neither prime nor composite"
    if isinstance(n, complex) == True:
        print("Sorry, trial division doesn't like negative numbers. Try again.")
    elif n == 0:
        return npnc
    elif n == 1:
        return npnc
    else:
        for m in range(2, (int(n**.5)+1)):
            if n%m == 0:
                print("That number is not prime")
                break
            elif n%m > 0:
                print("The number you entered is prime")

注意:它确实有一个我没有包含的“except ValueError”片段。你知道吗


Tags: theyounumberforreturnifthatis
2条回答

在你的函数中使用它-分解任务总是很好的,在这种情况下,它允许提前返回:

def isprime_impl(n):
    for m in range(2, (int(n**.5)+1)):
        if n%m == 0:
            return False
    return True

在这种情况下可以使用for..else。如果没有跳出循环,那么程序将在for之后执行else部分。你知道吗

for m in range(2, (int(n**.5)+1)):
    if n%m == 0:
        print("That number is not prime")
        break
else:
    print("number is prime")

等同于:

found = False
for m in range(2, (int(n**.5)+1)):
    if n%m == 0:
        print("That number is not prime")
        found = True
        break
if not found:
    print("number is prime")

docs

相关问题 更多 >