一个数如果恰好等于不包含它本身所有因子之和,这个数就称为"完数"。 例如,6的因子为1、2、3,而6=1+2+3,因此6是"完数"。 编程序找出N之内的所有完数,并按下面格式输出其因子。C语言描述。
题目分析:
从题目中可以找出关键词,是因子之和等于其本身。
那么我们就需要先找出一个数的每一个因子,再相加,来判断。
求一个数的因子:通过循环让一个数来除以小于其本身的每一个数,若余数为零,则为其因子。
注意:
题目可能会限制格式,这里格式很重要,通过一个for来输出完数但是不换行来接着输出他的因子,在for后在加上换行。
代码:
#include<stdio.h>
int main()
{
int n,m,sum=0;
int N;
int i,j;
scanf("%d",&N);
for(n=2;n<=N;n++)
{
sum=0;//每一次sum需要归零
for(i=1;i<n;i++)//循环来找出因子
{
if(n%i==0)
sum=sum+i;
}
if(sum==n)//判断是不是完数
{
printf("%d its factors are ",n);
for(j=1;j<n;j++)//打印出每个完数的因子
{
if(n%j==0)
printf("% d",j);
}
printf("\n");//一个完数后换行
}
}
return 0;
}
理解之后会很简单,也可以通过数组来实现会更简单,但是要注意在赋值是不能出错。
大体思路就是这样, 如果有什么不知道的,欢迎询问。