Python计算素数

时间:2015-08-11 17:26:16

标签: python

我必须定义一个名为is_prime的函数,它将数字x作为输入,然后对于从2到x - 1的每个数字n,测试x是否可被n整除。 如果是,则返回False。如果没有,则返回True。

我正在使用的系统(codecademy)给我的代码错误消息“哎呀,再试一次。你的is_prime函数是否只取一个参数(一个整数)?你的代码抛出了一个”不支持的操作数类型%:'int'和'list'“错误。”

请有人修改我的代码并解释我的代码是如何错误的吗?

def is_prime(x):
    n = range(2, x-1)
    if x % n == 0:
        return False
    else:
        return True

2 个答案:

答案 0 :(得分:3)

你需要遍历范围:

 def is_prime(x):
    if x < 2:
        return False
    for i in range(2,x):
        if x % i == 0:
            return False
    return True

if x % i == 0永远不会评估为True,你有一个素数,所以你在检查每个i之后在循环外返回True。你可以简单地返回一个gen exp:

def is_prime(x):
    return x > 1 and not any(x % i == 0 for i in range(2, x))

答案 1 :(得分:0)

这不是你如何使用范围。

你想要

def is_prime(x):
    for n in range(2, x-1):
        if x % n == 0:
            return False
    return True

Range返回一个列表,因此您的原始代码正在检查列表对象是否可以被n整除,而不是检查列表中的每个元素。