2014-09-11 63 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

相关问题