簡體   English   中英

為什么這個素數算法不說2不是素數?

[英]Why doesn't this prime number algorithm say that 2 is not prime?

為什么當您在該程序中輸入2時卻返回“ 2 is prime”? 根據該代碼,如果除以i的余數等於0,則i不是素數, i是從2(包括2)到該數字的任何數字。 但是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")

因為for i in range(2,2):永遠不會為true /將不會執行。

考慮一下range(start, stop) ...開始和停止相同,因此不會進入for循環。

2是質數,但在這種情況下,無需計算if語句即可確定其質數

有關pythons range函數的更多詳細信息

range(2, 2)實際上是一個空列表,因此for循環根本不會迭代。 它只是直接跳轉到else子句:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM