问题描述
如果一个数恰好等于它的所有因子(包括1但不包括自身)之和,则称之为“完数”。例如6的因子是1,2,3,且6=1+2+3,因此6是完数。编写程序找出1000之内的所有完数。注意1不是完数。
输入格式
无
输出格式
如有多个完数,则分行输出,每行输出一个完数。(注意,不要输出其他任何多余字符)
题解:
注意判断相等的条件if( sum==i )要放在外层循环,如果放在内层循环判断会出现多出来一个24的答案,因为她刚好满足所有条件(会有break提前跳出),导致出错。
import java.util.Scanner;
public class Main{
public static void main(String args[]){
Scanner in=new Scanner(System.in);
for (int i=1;i<=1000;i++) {
int sum=0;
for (int j=1;j<i;j++) {
//这里可以写成 if ( i/j == (float) i/j )
if (i%j==0) {
sum+=j;
}
}
if (sum==i) {
System.out.println(i);
}
}
}
}