解题思路:
题目描述
一个数如果恰好等于不包含它本身所有因子之和,这个数就称为"完数"。 例如,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语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:849 |
简单的a+b (C语言代码)浏览:594 |
简单的a+b (C语言代码)浏览:583 |
C语言程序设计教程(第三版)课后习题8.3 (C语言代码)浏览:436 |
C语言程序设计教程(第三版)课后习题6.4 (C语言代码)浏览:639 |
C语言程序设计教程(第三版)课后习题6.2 (C语言代码)浏览:1432 |
C语言程序设计教程(第三版)课后习题1.6 (C语言代码)浏览:732 |
WU-整数平均值 (C++代码)浏览:1307 |
杨辉三角 (C语言代码)浏览:505 |
C语言程序设计教程(第三版)课后习题6.3 (C语言代码)浏览:494 |