题目描述
一个数如果恰好等于它的因子之和,这个数称为“完数”,如6的因子为 1,2,3,而1+2+3=6,因此6就是完数 提示: 判断一个数是否是完数,用穷举法:从1~n/2+1 逐个判断是否整除,如果整除则累加 如果累加结果与n 相等,则输出完数n; 如果完数个数为0,则输出NO 类似问题可以做1111号题目
输入
输入一个整数n(0 < n <=1000)
输出
输出2到n间的所有完数。注:如果有多个,输出在同一行,用空格隔开,如果没有,输出“NO” 。如:输入3 ,输出:NO ;输入8 ,输出:6;输入30,输出:6 28。
样例输入
30
样例输出
6 28
#include<stdio.h>
int main()
{
int n,i,j,tem=0,c=0;
scanf("%d",&n);
for(i=1;i<=n;i++)//控制从1找到n
{
for(j=1,tem=0;j<i;j++)
{
if(i%j==0)//带入6试试6/1==06/2==06/3==26/4!=0
{
tem+=j;//tem=1;tem=3 tem=6
}
}
if(tem==i)
{
printf("%d ",i);
c++;
}
}
if(c==0)
{
printf("NO\n");
}
return 0;
}