解题思路:
题目描述
一个数如果恰好等于不包含它本身所有因子之和,这个数就称为"完数"。 例如,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 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复