Python 质数函数问题

Python prime function problems

我对python很陌生;我两天前才开始。在网上看了一些设计后,我尝试使用这个函数来判断一个数是否为质数:

def isprime(n):
    if n == 1:
        print("1 is not a prime.")
    if n == 2:
        print("2 is a prime number.")
    for x in range(2, int(n)):
        if n%x == 0:
            print(n, "is a composite number.")
            break
        else:
            print(n, "is a prime number.")
            break
isprime(int(input("Enter a number.")))

isprime(int(input("Enter a number."))) 这样我就可以 运行 文件作为 .py。 然而,虽然它 运行 没有任何错误,但它 returns 误报。例如,它声明 45 是质数。我做错了什么?

问题出在您的代码逻辑上。缩进在 Python 中起着重要作用。如果像这样更改代码,它会很好用:

def isprime(n):
    if n == 1:
        print("1 is not a prime.")
    if n == 2:
        print("2 is a prime number.")
    prime = True
    for x in range(2, int(n)):
        if n%x == 0:
            print(n, "is a composite number.")
            prime = False
            break 
    if prime:
        print(n, "is a prime number.")

您将在第一次迭代后中止 for x in range 循环的迭代,因为 if 语句的两个分支都包含 break.

删除 else 分支并使用 for...else 结构:

def isprime(n):
    if n == 1:
        print("1 is not a prime.")
    if n == 2:
        print("2 is a prime number.")
    for x in range(2, int(n)):
        if n%x == 0:
            print(n, "is a composite number.")
            break
    else:
        print(n, "is a prime number.")