为什么当你输入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")
答案 0 :(得分:3)
因为for i in range(2,2):
永远不会为真/不会执行。
考虑一下range(start, stop)
...开始和结束是一样的,所以它不会进入for循环。
2是素数,但是if语句不需要计算以确定其是否为素数的一种情况
答案 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!