题目描述
一个数如果恰好等于它的因子之和,这个数就称为完数。例如,6的因子为1,2,3,且6=1+2+3,因此6是完数。
输入格式
一个正整数n。
输出格式
判断n是否为完数。如果是,则输出Yes和它的所有因子;否则,输出No。
样例输入
28
样例输出
Yes,its factors are 1 2 4 7 14;
解题思路:
循环求和,判断和是否与输入相等,相等则返回Yes并循环输出其因子,否则返回No;
代码实现:
#include<iostream>
using namespace std;
int main()
{
int n,i,sum=0;
cin>>n;
for(i=1;i<n;i++)
{
if(n%i==0)
sum+=i;
}
if(sum==n)
{
cout<<"Yes,its factors are 1 ";
for(i=2;i<n;i++)
{
if(n%i==0)
cout<<i<<" ";
}
}
else
cout<<"No";
return 0;
}
心得:
循环判断求和,在输出时可进行循环判断并输出。