找出1-1000内所有完数(数本身等于因子之和的数)

希望各位帮忙看看我的编程问题出在了哪里,是循环的哪一步出了问题吗?应该怎么样改

img

19行的循环条件判断错了,这样会让偶数少了一个因数(它/ 2 那个);
22行后面多了一个分号,导致outfile<<x<<endl的调用条件没匹配上。
给两个编程建议:
1遇到if/for/whie的需要{}写代码块的时候,就算代码块中只有一行代码,也不要省略花括号。
2.使用必要缩进来整体代码结构,避免非逻辑错误。
给你一个格式更好点的代码,如下:

#include <iostream>
#include <fstream>
using namespace std;
int main() {
    ofstream outfile;
    outilfe.open("out.txt");
    int x, sum;
    for(x = 2; x < 1000; x++) {
        sum = 0;
        for(int i = 1; i <= x / 2; i++) {
            if (x % i == 0) {
                sum = sum + i;
            }
        }
        if (sum == x) {
            outfile << x << endl;
        }
    }
    outfile.close();
    return 0;
}

22行后面的分号删掉
for循环结束条件是i<=x/2,不是i<x/2