3

所以我只想检查我的功能有什么问题。它给出的素数很好,但是当我输入像 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.")
4

2 回答 2

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.")
于 2013-09-17T23:12:29.653 回答
0

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

于 2013-09-17T23:15:15.460 回答