为什么这个素数算法不能说2不是素数?

时间:2015-06-10 23:34:50

标签: python

为什么当你输入2到this program时,它会返回“2是素数”?根据代码,如果数字的余数除以i,其中i是从(并包括)2到数字的任何数字,等于0,那么数字不是素数。但是2除以2的余数为0,那么为什么程序会说2是素数?

# Python program to check if the input number is prime or not

# take input from the user
num = int(input("Enter a number: "))

# prime numbers are greater than 1
if num > 1:
   # check for factors
   for i in range(2,num):
       if (num % i) == 0:
           print(num,"is not a prime number")
           print(i,"times",num//i,"is",num)
           break
   else:
       print(num,"is a prime number")

# if input number is less than
# or equal to 1, it is not prime
else:
   print(num,"is not a prime number")

2 个答案:

答案 0 :(得分:3)

因为for i in range(2,2):永远不会为真/不会执行。

考虑一下range(start, stop) ...开始和结束是一样的,所以它不会进入for循环。

2是素数,但是if语句不需要计算以确定其是否为素数的一种情况

more details about pythons range function

答案 1 :(得分:1)

range(2, 2)实际上是一个空列表,因此for循环根本不会迭代。它只是直接跳到else子句:

>>> num = 2
>>> range(2, num)
[]
>>> for i in range(2, num):
...     print "executing loop"
... else:
...     print "done!"
... 
done!