确定随机Int是否为素数

时间:2016-12-18 20:44:32

标签: python integer int primes modulus

当我需要确定数字x是否为素数时,我有一点问题。 x将是一个随机生成的正整数,当我执行代码时,我得到以下消息:

Your function fails on is_prime(2). It returns None when it should return True.

我的代码:

def is_prime(x):
if x < 2:
    return False
else:
    for n in range(2, x):
        while x % n == 0:
            return False
            break
        else:
            return True

我希望while循环迭代n == 2直到n ==(x-1)但它似乎没有做到! 我做错了什么?

1 个答案:

答案 0 :(得分:0)

你可以更简单地编写这个函数:

import math
def is_prime(n):
    if n % 2 == 0 and n > 2: 
       return False
    for i in range(3, int(math.sqrt(n)) + 1, 2):
        if n % i == 0:
           return False
    return True

因此,您对is_prime(2)的调用不会通过if测试,也不会在for run中使用,只会返回True。

如果它们大于3且不均匀,则应测试所有其他素数。