一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如:6的因子为1,2,3,而6=1+2+3,因此6是完数。输入整数n,编程找出2-n(包括n)之内的所有完数,并按下列格式输出其因子:6 its factors are 1 2 3。
输入格式:
输入整数n(n在2-10000之间)
输出格式:
每行输出一个完数,格式如下:因子间有一个空格隔开,每行结束后也有一空格。
6 its factors are 1 2 3
答案
#include<stdio.h>
int main()
{
int i,j,n,sum; // i表示要判断的数,j表示因子,sum表示因子之和
scanf("%d",&n);
for (i=2;i<=n;i++)
{
sum= 1;
for(j=2;j<=i/2;j++)
if (i%j==0) // 判断i能否被j整除,能的话j即为因子 因子不包括自身
sum+=j;
if(sum==i) // 判断此数是否等于因子之和
{
printf("%d its factors are 1 ",i); //输出该数
for(j=2;j<=i/2;j++)
if(i%j==0)printf("%d ",j); //输出因子
printf("\n");
}
}
return 0;
}