题目:
一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3编程找出1000以内的所有完数(因子:除去这个数本身的其他约数)
考察嵌套循环的使用
代码实现:
public class ForForTest03 {
public static void main(String[] args) {
int total = 0;//因子之和
// int sum = 0;//一行的输出
for(int i = 2 ;i <= 1000;i++) {//i是被判断数
// int total = 0;//因子之和
for(int j = 1; j < i/2; j++) {//j是除数
if( i % j == 0 ) {
total += j;
}
}
if( total == i) {//写在外循环
System.out.print(i + " ");
// sum++;
}
// if(sum == 5) {
// System.out.println();
// }
//重置total
total = 0;
}
}
运行结果:
总结:
- 要注意某些代码写在外循环还是内循环
- 循环初始化和循环条件不要想得太复杂,基本大部分都是从小到大,注意停止条件
- total放在循环外要注意重置,要是放在外循环中,内循环上边,就不用重置
- 注掉的部分是我写的五个换行操作,不过输出只有三个哈哈哈,就注释掉了
- 算法优化:将 内循环的循环条件改为i/2,之前是i
- 来给自己比个yeah