私信TA

用户名:aj1433223

访问量:1111

签 名:

等  级
排  名 4008
经  验 1788
参赛次数 1
文章发表 7
年  龄 20
在职情况 学生
学  校 上饶职业技术学院
专  业 计算机应用技术

  自我简介:

C 艹

解题思路:

题目描述

一个数如果恰好等于不包含它本身所有因子之和,这个数就称为"完数"。 例如,6的因子为1、2、3,而6=1+2+3,因此6是"完数"。 编程序找出N之内的所有完数,并按下面格式输出其因子

输入格式

N

输出格式

? its factors are ? ? ?

样例输入

复制

1000

样例输出

复制

6 its factors are 1 2 3
28 its factors are 1 2 4 7 14
496 its factors are 1 2 4 8 16 31 62 124 248



注意事项: for循环遍历 N个数。判断一个数的因子,能被其以内的数 %整除 。累加这些因子,且放入数组,最终是否 == 这个数。

                若所有因子 的和 == 这个数, 按“样例”输出“和、及其 因子”

                注 :  判断一个数, 无论 是否为完数,每次都要将 num 和数组 清空 !!,给下一个数 使用。


参考代码:

#include <iostream>

using namespace std;

#include <vector>

#include <numeric>   // accumulate ( ) STL算法头文件

int main()

{

    int n,num=0;

    vector<int>v;

    cin >> n;

    for(int i=1; i<=n; i++)        // 遍历 N以内的 每个数

    {

        for(int j=1; j<i; j++)

        {

            if(i % j== 0)

            {

                num += j;          // 求和 方法一

                v.push_back(j);

            }

        }

     //   num = accumulate(v.begin(),v.end(),0);  // 求和 方法二STL算法

        if(num == i)

        {

             cout << i <<" its factors are ";

             for(vector<int>:: iterator it=v.begin(); it!=v.end(); it++)

                cout << *it <<' ';

             cout << endl;

        }   

        num = 0;        // 无论 是否的完数,每次 i++都要将 num 和数组 清空 !!

        v.clear();

    }

    return 0;

}


 

0.0分

0 人评分

  评论区

  • «
  • »