m0_57912330
m0_57912330
2021-05-04 21:45
采纳率: 50%
浏览 91

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

求助: 在C++中计算m~n之间所有完数之和。 (1)主函数功能:从键盘输入两个整数m、n,通过调用子函数判断出m~n之间所有完数,计算所有完数之和并输出结果 (2)子函数功能:定义有返回值函数,实现判断正整数x是否为完数的功能。返回真或假。 疑惑:怎么在子函数返回真假后,同时返回判断的完数? 谢谢
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

5条回答 默认 最新

  • qq_46523755
    正在学C++ 2021-05-04 22:36
    已采纳
    #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;
    }
    点赞 评论
  • SoftwareTeacher
    SoftwareTeacher 2021-05-04 21:51

    请说明什么是完数?

    点赞 评论
  • m0_57912330
    m0_57912330 2021-05-04 21:57

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

    点赞 评论
  • qq_46523755
    正在学C++ 2021-05-04 23:58

    #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;
    }
    点赞 评论
  • m0_57912330
    m0_57912330 2021-05-05 00:22

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

    点赞 评论

相关推荐