当前位置: 代码迷 >> Java相关 >> 报错在哪里 一个算法
  详细解决方案

报错在哪里 一个算法

热度:32   发布时间:2016-04-22 21:03:01.0
出错在哪里 一个算法
public class Test{
  public static void main(String[] args){
   int a = 0; 
    for(int i=1; i<=1000; i++){
      for(int j=1; j<i; j++){
        if(i%j == 0){
          a += j;
        }
      }       
      if (i == a){
        System.out.println(i);
      }
    }
  }
}


这是一个求1000以内完数的编码,我觉得我思路是对的 编译也对额 可是没有输出 是怎么回事啊



------解决方案--------------------
你忘了每次循环重置 a 了。。
int a = 0;
for (int i = 1; i <= 1000; i++) {
a = 0;
for (int j = 1; j < i; j++) {
if (i % j == 0) {
a += j;
}
}
if (i == a) {
System.out.println(i);
}
}
就行了
------解决方案--------------------
public class Test2 {
public static void main(String[] args) {
for (int i = 1; i <= 1000; i++) {
int a = 0;
for (int j = 1; j < i; j++) {
if (i % j == 0) {
a += j;
}
}
if (i == a) {
System.out.println(i);
}
}
}
}

------解决方案--------------------

------解决方案--------------------


能看懂不?
------解决方案--------------------
如果把a放在循环外的话,i=6时,a已经等于12了
  相关解决方案