用C语言求1000以内的完数?

时间:2015.12.24 发布人:ysjt123

用C语言求1000以内的完数?

已解决问题

谷歌ysjt123用户在2015.12.24提交了关于“豆腐脑用C语言求1000以内的完数?”的提问,欢迎大家涌跃发表自己的观点。目前共有1个回答,最后更新于2024-09-16T14:45:35。希望大家能够帮助她。

详细问题描述及疑问:期待您的答案,真心佩服你,谢谢 !

希望以下的回答,能够帮助你。

第1个回答

用户名:wanghuiso08  

来自数,即完全数(Perfect**mber),又称完美数或完备数,是一些特殊的自然数。其所有首鲁卷陆十列爱的真因子(即除了自身以外问答的约数)的和(即因子函数),恰好等于本身。
据该定义可以得出判断完数的函数如下:
#include<stdio.h>
intis_perfect_**mber(intn)
{
inti,s=0衡存;
for(i=1;款i<=n/2;i++)
if(n%i==我当制0)s+=i;/怎跳怎属充行上真老盐红/统计所有真因子的和。
if(s==n)r视喜eturn1;//如果总称从打尽主与原值相等,则该数为完数。

return0;//不格道山古容圆据希搞技青是完数。
}
根据该函数,只需要对需要打印的范围内1~1000做遍历,并逐一调用该函数判断,如果返回1则打印即可。
完整代码如下:
#include<stdio.h>
intis_pe劳离清rfect_**mber(intn)
{
inti结星料河晚,s=0;
for(i=1;i<=n/2;i++)
if(n%i==0)s+=i;//统计盾阳所有真因子的和。
if(s==n)return1;//如果与原值相等,则该数为完数。

return0;//不是完数。
底议制这该目养}

intmain()
{
intn;
for(n=1;n<1000;n++)
if(is_perfect_**mber(n))printf("%d,",n);
}