繁体   English   中英

确定随机Int是否为质数

[英]determining if random Int is prime or not

当我需要确定数字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),但似乎没有做到! 我究竟做错了什么?

您可以更简单地编写此函数:

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运行中使用,只会返回True。

如果所有其他质数都大于3并且不等于偶数,则应进行测试。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM