2016-12-08 54 views
-4
public class oboroten3 { 

public static void main(String[] args) { 
    int i = 2; 
    int b = 1000000; 
    while (b > 2) { 
     double d = Math.sqrt(b); 
     long p = Math.round(d); 
     int c = b % 10; 
     if ((c == 1) || (c == 3) || (c == 7) || (c == 9)) { 
      while ((i < p) && (b % i != 0)) { 
       if (i == b - 1) { 
        System.out.print(b + ","); 
       } 
       i++; 
      } 
     } 
     i = 2; 
     b++; 
    } 

} 
} 

沒有任何反應,當我運行程序,它是精神疾病找到素數,這是工作之前,我補充說,需要b爲什麼這個程序無法正常輸出

+1

'B'是*** ***總是大於2 – ItamarG3

+0

使用調試器先找到你的錯誤的來源。在這裏發佈問題之前,最好做這個*。 –

+0

Eclpise告訴我沒有任何錯誤,而且b更好,它不應該阻止程序運行 – Tom

回答

0

根對於初學者部分你做

while (b > 2) 

當b已被設置爲1000000,那麼你增加每個循環

那麼這將不停止運行無限灣這可能是您應該修復的第一件事。

+0

我做了這樣的程序,所以我可以看到它的運行速度,加載我的CPU的次數,等等,但它不應該阻止它運行 – Tom

+0

添加系統打印下面的「if」,這樣你就可以看到你是否進入循環。我注意到的另一個問題是,我總是會增加,所以如果運行足夠多的循環,「我」可能比「p」開始時更大,並且您將永遠不會進入while循環。由於你的代碼在語法上沒有任何錯誤(就拋出錯誤而言),我只能斷定你的數學是關閉的,你的「if」條件永遠不會滿足。 – mstorkson

0

相信這個條件進入到內while循環,並因此停止控制,它不打印任何東西:

(i < p)

while之前,將i初始化爲2和b被初始化爲1000000.現在,您的if條件(位於內部while內)將檢查i是否等於b - 1,如果i小於p,則永遠不可能。所以,如果你刪除(i < p)條件,它會正常工作。 while循環將是:

while (b % i != 0) {

相關問題