求助: 在C++中计算m~n之间所有完数之和。 (1)主函数功能:从键盘输入两个整数m、n,通过调用

求助: 在C++中计算m~n之间所有完数之和。 (1)主函数功能:从键盘输入两个整数m、n,通过调用子函数判断出m~n之间所有完数,计算所有完数之和并输出结果 (2)子函数功能:定义有返回值函数,实现判断正整数x是否为完数的功能。返回真或假。 疑惑:怎么在子函数返回真假后,同时返回判断的完数? 谢谢
#include <iostream>
using namespace std;
bool func(int x){
    int s=0, k=0, a[100];
    for(int j=1;j<x;j++){
        if(x%j==0){
            s+=j;
            a[k++]=j;
        }
    }
    if(x==s) return true;
    else return false;
}
int main(){
    int m, n, sum=0;
    cin >> m >> n;
    for(int i=m; i <= n; i= i + 1){
        if (func(i)){
            sum+=i;
//            cout<<i<<endl;
        }
    }
    cout<<sum<<endl;
    return 0;
}

 

请说明什么是完数?

完数是指:该数所有真因子之和等于该数。eg:28=1+2+4+7

#include <iostream>
using namespace std;
bool func(int x){
    int s=0;
    for(int j=1;j<x;j++)
        if(x%j==0) s+=j;

    if(x==s) return true;
    else return false;
}
int main(){
    int m, n, sum=0;
    cin >> m >> n;
    for(int i=m; i <= n; i= i + 1){
        if (func(i)){
            sum+=i;
            cout<<i<<endl;
        }
    }
    cout<<sum<<endl;
    return 0;
}

 

#include using namespace std; bool a(int b); void main (void) { int m,n,i,sum=0; cout<<"请依次输入数字m,n(n>m>0):"; c