这个python素数函数有什么问题?

时间:2013-09-17 23:09:57

标签: python function numbers primes

所以我只想查看我的功能有什么问题。它给出素数就好了但是当我输入一个像4这样的数字时,它打印出“4不是素数”然后“4是素数”。 什么似乎是错误? (我知道这很难过,但我花了8个小时做这个(初学者))。

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

2 个答案:

答案 0 :(得分:4)

您的算法错误,您需要在检测到因子后中断,如果没有因素,则打印是素数。

以下是更正后的版本:

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

答案 1 :(得分:0)

您应该在break下添加print(n, "is not prime.")语句,否则它将继续遍历所有数字,直到n,这是不必要的。