7-89 输出小于n的所有完数 (10分)
本题要求从小到大输出小于n(2≤n≤10000)的所有完数。所谓完数就是该数恰好等于除自身外的因子之和。例如:6=1+2+3,其中1、2、3为6的因子。
输入格式:
输入在一行中给出n(2≤n≤10000)的值。
输出格式:
输出完数,每个数占6位。如果小于n的完数不存在,则输出"NONE"。
输入样例:
1000
输出样例:
6 28 496
代码:
#include<stdio.h>
int main(){
int sum,cnt = 0,n;
scanf("%d",&n);
for(int p = 2; p <= n ;p ++)
{
sum = 1;
for(int j = 2 ;j < p ;j ++)
{
if(p%j==0)
{
sum +=j;
//printf("%d\n",sum);
}
}
if(sum==p)
{
printf("%6d",p);
cnt ++;
}
}
if(cnt==0) printf("NONE\n");
return 0;
}