该问题已解决。
j的初始化有误,不应在循环外赋初值1,而应在for循环内赋初值1。前者执行一次for循环后便不再从1开始执行运算,与算法不符。
正解如下:
//wqs.java
public class wqs {
public static void main(String args[]){
int k,i; //不应在该处为j赋初值1;
for (i=2;i<=1000;i++) {
int j=1,sum=0; //而应在该处为j赋初值1;
while (j<=i/2) {
k=i%j;
if(k==0) sum+=j;
j++;
}
if(sum==i)
System.out.println(i);
}
}
}
完全数的概念:若一个自然数,恰好与除去它本身以外的一切因数的和相等,这种数叫做完全数,但编程序的话,下一位吧
完全数的概念是。。。(早就给忘了)