完数C++求看下我错在哪?

img

img


我初学C++希望能够指出我的代码中的问题,按照已有的思路该如何改正,仅仅使用循环和选择结构,谢谢。


int input = 1;
while (input < 1000) {
    input++;
    int[] num = new int[input / 2];
    for (int i = 1; i < (input / 2 + 1); i++) {
        if (input % i == 0) {
            num[i - 1] = i;
        }
    }
    int sum = 0;
    for (int j : num) {
        sum += j;
    }
    if (sum == input) {
        System.out.println("完数=" + input);
    }
}

这是我用java写的

首先,因子就不可能为0,所以s不能从0开始

内层两个while循环,可以套一起,分开写会有重复