2017-10-10 58 views
0

輸出:<generator object <genexpr> at 0x00000293AA2F8E60>而不是我試圖獲得的素數列表。素數列表 - 意外輸出

import math 
#here i try to use trial division to validate whether a number is false or not  
def isPrime(n): 
    d = {} 
    u = math.floor(math.sqrt(n)) 
    i = 2 
    while (i <= u): 
     if (n % i == 0): 
      return False 
     i +=1 
     return True 
#here I attempt to find all the prime numbers between 1 and 5000 
print(isPrime(n) for n in range(1,5000)) 
+0

如果你改用'print(list(isPrime(n)for n in range(1,5000))'''會發生什麼? –

+0

這是python代碼嗎?也許你應該添加一個合適的語言標籤。 –

回答

0

我認爲你正在試圖做的是這樣的:

import math 
def isPrime(n): 
    u = math.floor(math.sqrt(n)) 
    i = 2 
    while (i <= u): 
     if (n % i == 0): 
      return False 
     i +=1 
    return True 

for n in range(1, 5000): 
    print(isPrime(n)) 
1

你建立了一個發電機,然後告訴Python來打印對象。這就是你得到的。從你的描述中,我認爲你需要一個列表理解,它會給你一個素數列表。

試試這個:

print ([n for n in range(1, 5000) if isPrime(n) ]) 

請注意,您要打印的素數,isPrime返回值。