首先,你的num不应该在循环外赋初值,因为这题的原理是,每个数除自身以外的约数相加和等于自身,所以,对于每个数来说,开始的num都应该是0,还有,你判断这数是完美数,那么num应该是所有除自身外的所有约数之和,所以那个判断if语句也应该在循环外
int num ;
for(int i=1;i<=100;i++){
num=0;
for(int j=1;j<=i/2;j++){
if(i%j==0){
num+=j;
}
}//end for
if(num==i){
System.out.println("完美数:"+num);
}
}