2013-10-26 25 views
-1
import math 
prime=True 
for num in range(1,1000): 
    x=math.sqrt(num) 
    x=int(x) 
    for i in range(2,x): 
     if(num%i==0): 
      prime=False 
     else: 
      print(num) 

即時試圖找到質數,但我似乎無法理解爲什麼這不工作。即時通訊嘗試使用平方根發現問題爲什麼不是我的代碼給我素數

+4

這是相當嚴重的標記。你能否至少添加你的語言? – Bathsheba

+0

'對於範圍(2,x + 1)'。另外,大概每個循環都應該設置prime。你想要的東西更像這樣,我的頭頂上:'def isPrime(x): 不返回任何(x%i == 0爲我在範圍內(2,int(x **'0.5)+ 1) ) – hughdbrown

+0

添加了python標籤.. – 2013-10-26 19:28:29

回答

3

您需要在打印前測試所有數字。

for i in range(2,x): 
    if(num%i==0): 
     prime=False 
     break # optimisation - see comments 
if prime: 
     print(num) 

還,重置主要爲True每個號碼:

for num in range(1,1000): 
    prime = True 
    x=math.sqrt(num) 
+1

他也可以打破如果不是黃金的表演 – 2013-10-26 19:30:06

相關問題