C语言中求解1000之内的所有“完数”并求出因子
·
完数的定义:
一个数如果恰好等于它的因子之和,这个数就称为“完数”。
例如:6的因子为1,2,3,而6=1+2+3,因此6为“完数”。
第一步先写出1000以内的完数:
#include<stdio.h>
int main()
{
int i,j,sum;
printf("1000以内的完数如下:\n");
for(i=1;i<=1000;i++)
{
sum=0; //这里的sum必须在for之内(循环体不能掉)
for(j=1;j<i;j++) //就是求从1~i能被除的数(可以参照我写的素数)
{
if(i%j==0) //就是求从1~i能被整除的数
sum+=j; //将所有的因子加起来看看能不能等于i
}
if(sum==i)
{
printf("\n\t%d为完数\n",i);
}
}
return 0;
}
切记不要忘了sum=0在for里面,也要明白j<i是为什么
第二步求因子:
for(j=1;j<i;j++)
{
if(i%j==0)
printf("\t%d",j); //这里的j就是因子
}
总结:
#include<stdio.h>
int main()
{
int i,j,sum;
printf("1000以内的完数如下:\n");
for(i=1;i<=1000;i++)
{
sum=0; //这里的sum必须在for之内(循环体不能掉)
for(j=1;j<i;j++) //就是求从1~i能被除的数(可以参照我写的素数)
{
if(i%j==0) //就是求从1~i能被整除的数
sum+=j; //将所有的因子加起来看看能不能等于i
}
if(sum==i)
{
printf("\n\t%d为完数,因子为:",i);
for(j=1;j<i;j++)
{
if(i%j==0)
printf(" %d",j);
}
printf("\n");
}
}
return 0;
}
运行图:
更多推荐
已为社区贡献1条内容
所有评论(0)