题目:输入一个数字n,判断从2开始到n,一共有几个完全数,并进行输出。
例如:
输入7;
输出:1+2+3=6;
证明从2到7一共有一个完全数是6;
完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数。它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。
所以这里我们需要找出这个数字的所有约数,去除掉本身之后进行加和,之后进行比较。
#include <iostream>
using nameapace std;
void perfect_number(int s)
{
int sum=0;
for(int n=2;n<=s;n++)//为什么从2开始
{
for(int i=1;i<=n/2;i++)
{
if(n%i==0)sum+=i;//这里判断的是i是否为n的一个因子。
}
if(sum==n)//判断是否是一个完全数
{
for(int j=1;j<=n/2;j++)
{
if(n%j==0) cout<<j+"+";
if(j==n/2) cout<<"\b"<<"="<<n<<end1
}
}
sum=0;
}
}
int main()
{
int n;
cin>>n;
perfect_number();
return 0;
}
这道题的重点就在于1、理解完全数的概念;2、因子的概念;3、质数合数