Java“完数”代码详解

一个数的输出恰好等于它的因子之和,这个数就称为“完数”。例如:6=1+2+3编程,找出1000以内的所有完数。因子:出去这个数本身的其他约数

最开始想的就是让其从头循环硬解代码,其时间复杂度是1000*1000,时间会花费很久

public class t1 {
    public static void main(String[] args) {

        for (int i = 1; i <= 1000; i++) {
            int sum = 0;
            for (int j = 1; j < i; j++) {
                if (i % j == 0) {
                    sum += j;
                }
            }
            if (sum == i) System.out.print(i + " ");
        }
    }
}

 更改之后想了一下循环到它的一半就可以了,然后只需要运行1000*500,时间复杂度就减少点

public class t1 {
    public static void main(String[] args) {

        for (int i = 1; i < =1000; i++) {
            int sum = 0;
            for (int j = 1; j < i/2+1; j++) {
                if (i % j == 0) {
                    sum += j;
                }
            }
            if (sum == i) System.out.print(i + " ");
        }
    }
}

你可能感兴趣的:(java,算法,jvm)