2014-09-11 26 views
-2

在我的程序,當我運行它,它只能說明:我想做一個簡單的程序來計算完美的數字。我有一個錯誤

0 

它應該無限期地運行。 這裏是我的代碼:

PerfectNumberAlert alert = new PerfectNumberAlert(); 
alert.show(); 
boolean per = true; 
int numb = 0; 
for (int num = 0;; num++) 
{ 
    numb = 0; 
    per = true; 
    for(int div = 2; div < num; div++) 
    { 
     if (num % div == 0) 
     { 
      numb += div; 
      per = false; 
      break; 
     }else{ 
      break; 
     } 
    } 
    if (numb == num) 
    { 
     System.out.println(num + " is perfect"); 
    } 
} 

如果有人知道是什麼問題,請幫我解決這個問題。

+0

只是爲了數學問題的精度,你嘗試檢查素數。完美的數字是在不同的上下文中定義的。 – apomene 2014-09-11 11:55:19

+0

我已經嘗試檢查素數,它的工作完美。 – DanielAllen999 2014-09-11 11:58:36

+0

for(int div = 2; div 2014-09-11 11:58:45

回答

0

Num爲零,因此循環for(int div = 2; div < num; div++)未啓動。

+0

它沒有爲我工作。 – DanielAllen999 2014-09-11 11:59:57

+0

@ dany123awesome這是什麼意思'它不適合我' – Jens 2014-09-11 12:01:01

+0

是否我有一個比num大的整數或不是無關緊要,因爲循環以任一方式運行。這可能是一個小故障,但它會運行兩個循環。 – DanielAllen999 2014-09-11 19:27:07

0

num爲零且麻木也爲零

您的循環中沒有。 2它檢查時,DIV < NUM那麼它將進入循環,但它的div已經是更大然後NUM因此直接進入,如果

if (numb == num) 
       { 
        System.out.println(num + " is perfect"); 
       } 

,並打印0

0

Alexander_Winter指出,你打破了循環後第一次迭代,不舒服什麼是你做白衣旗(布爾)

  int numb = 0; 
      for (int num = 0; num == -1; num++) 
      { 
       numb = 0; 
       for(int div = 1; div < num; div++) 
       { 
        if (num % div == 0) 
        { 
         numb += div; 
        } 
       } 
       if (numb == num) 
       { 
        System.out.println(num + " is perfect"); 
       } 
      } 
+0

根據你的和@ Alexander_Winter的想法嘗試了代碼:int numb = 0; (int num = 0 ;; num ++) { numb = 0;對於(int div = 2; div DanielAllen999 2014-09-11 19:30:50

相關問題