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了