簡體   English   中英

python 中給定范圍內的素數,范圍()問題,

[英]Prime number in a given range in python, problem with range(),

該程序打印 1-20 之間的素數,我試圖掌握該程序中(for 循環,范圍和其他與 for 關聯)的工作

def isPrime(num):
    for i in range(2,num):
        if num%i==0:
            return False
        #else:
            #return True
    else:
        return True

#below is driver program        
for i in range(1, 20):
    if isPrime(i + 1):
        print(i + 1, end="\n")
print()

1.在這個程序中,將 num//2 而不是 num in range()結果是差異(打印 4 作為素數)為什么?

  1. 當 2 被發送到isprime()時,它甚至不會進入 for 循環,它不會被 if 條件檢查,而是由與 for 關聯的 else 塊輸出 2 作為素數。 為什么?怎么? 我認為由於range(2,num) ,2 作為 num 傳遞。

有人能解釋一下嗎??

問題是range(2,n)是所有數字 2, 3, ..., n-1。 因此,將您的for循環更改為:

for i in range(2,num+1):

照原樣,當傳入 2 時,范圍將為空。

暫無
暫無

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

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