一个数如果恰好等于它的因子之和, 这个数就称为”完数”. 例如 6 = 1+2+3。编程找出1000 以内的所有完数。
Java代码实现:
import java.util.LinkedList; public class Test { public static void main(String[] args) { for (int i = 2; i <= 1000; i++) { // 这里从2开始,1 为本身,排除掉。 if (num_wan(i)) { System.out.println(i); } } } private static boolean num_wan(int num) { int sum = 0; //sum 用来计算因子的和 LinkedList<Integer> list = new LinkedList<>(); //用来装所有的因子, for (int i = 2; i < num / 2; i++) { // 判断因子是否重复,重复就不装了,比如3和2 2和3。 if (!list.contains(i)) { if (num % i == 0) { list.add(i); list.add(num / i); sum = sum + i + (num / i); } } } if (sum+1 == num) { //和的结果 加1 ,1是所有数的因子 return true; }else { return false; } } }