题目描述
一个数如果恰好等于不包含它本身所有因子之和,这个数就称为"完数"。 例如,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
思路
输入一个数N,循环判断,从i=2到N的每一个数;
如果是完数,则输出;
判断方法,定义j为因子(1到N-1),若i%j==0,则是它的因子;
判断期间把所有因子的和(sum)求出来;
最后和(sum)等于i则是完数;
注意事项:
每次判断完,一个数i后,要把sum置0;
按输出规则输出;
#include <stdio.h>
int main()
{
long double N, sum = 0;
scanf( "%Lf", &N );
for ( int i = 2; i <= N; i++ )
{
for ( int j = 1; j <i; j++ )
{
if ( i % j == 0 )
{
sum = sum + j;
}
}
if ( sum == i )
{
printf( "%d its factors are ", i );
for ( int k = 1; k < i; k++ )
{
if ( i % k == 0 )
{
printf( "%d ", k );
}
}
printf( "\n" );
}
sum = 0;
}
return(0);
}