刷到一道判断完数的题,觉得题很好,想分享一下下。
首先要明确完数的定义。通过定义可知,我们首先要实现完数的判断,然后再实现完数因子的查找和输出。
1.完数的判断:我的思路是使用两个for循环来找出一个数的所有因子,再来判断因子之和是否等于这个数。一定时刻记着,因子不包含这个数本身。
for(i=1;i<=N;i++)
{
tem=0;//一定要初始化,否则答案会错
for(j=1;j<i;j++)//确保因子不包含数本身
{
if(i%j==0)//找到因子
tem+=j;//取和
}
if(tem==i)
{
printf("%d its factors are",i);
2.完数因子的输出:这个还是通过一个for循环来实现,与上面找到因子那部分差不多。注意,这部分代码在if里包括着。
for(j=1;j<i;j++)//保证不输出自身
{
if(i%j==0)
printf(" %d",j);
}
printf("\n");//一个完数的因子全部输出完毕后换到下一行
整体代码如下:
#include<stdio.h>
int main()
{
int N, i, j, tem;
scanf("%d",&N);
for(i=1;i<=N;i++)
{
tem=0;
for(j=1;j<i;j++)
{
if(i%j==0)
tem+=j;
}
if(tem==i)
{
printf("%d its factors are",i);
for(j=1;j<i;j++)
{
if(i%j==0)
printf(" %d",j);
}
printf("\n");
}
}
return 0;
}`
就是这些了。