1136完美数.png

思路:

  1. 遍历m~n的所有数字,找出它的因数;
  2. 将因数求和;
  3. 符合条件输出。

知识点

  1. 复习因数求和知识(与之前不同的是,这里的因数包含1,所以初始化为1;
  2. 函数的调用.

代码实现

#include <iostream>
using namespace std;

//定义求一个整数因数和的函数
int yinshuhe(int n) {
    int i, c = 1;
    for(i = 2; i * i <= n; i++) {
        if(n % i == 0) {
            if(n / i != i) {
                c = c + i + n / i;
            } else {
                c = c + i ;
            }
        }
    }
    return c;
}

int main() {
    int m, n, i, j;
    cin >> m >> n;
    //遍历m~n的整数
    for(i = m; i <= n; i++) {
        j = yinshuhe(i);
        //判断,符合条件就输出,此题要求数字之间用空格
        if(j == i) {
            cout << i <<" ";
        }
    }
    return 0;
}