2号被认为是素数 - 解释2个模数

时间:2017-01-27 22:55:53

标签: python python-3.x primes modulus

有人可以解释为什么数字2也会添加到下面代码中的素数列表中吗?

因为当至少有一个模数不等于0的数字时,下面的函数应该只将数字识别为素数。

作为

2 % 0 = 0
2 % 1 = 0

这就是为什么它不应该被包括在内,对吧?

def isprime(num1):
    for i in range(2, num1):
        if (num1 % i) == 0:
            return False
    return True


def getprimes(max_number):
    list_of_primes = []
    for i in range(2, max_number):
        if isprime(i):
            list_of_primes.append(i)
    return list_of_primes


def main():
    max_num_to_check = int(input('Enter the max limit: '))
    list_of_primes = getprimes(max_num_to_check)

    for i in list_of_primes:
        print(i)


main()

1 个答案:

答案 0 :(得分:0)

  

由于下面的函数只有当至少有1个模数不等于0的数字时才应该将数字识别为素数

您似乎误解了主要检查是如何运作的。 isprime方法实际检查是否存在模数等于零的数字。此外,它仅检查相关的号码,但不包括01,因为任何号码的模数为{{1} }为零,实际上未定义1的模数。

0的情况下,该函数将检查2中的所有数字,这是空的,因此它(正确地)返回range(2, 2)。该函数可以重写为这个,也许更清楚:

True