首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

又来了关于求1000以内的完数有关问题

2013-09-05 
又来求助了关于求1000以内的完数问题最近准备考二级这个月估计少不了要求教大家一些问题的,下面这个源代码

又来求助了关于求1000以内的完数问题
最近准备考二级这个月估计少不了要求教大家一些问题的,下面这个源代码我理解的七七八八了,不过还有一个问题没理解,那就是m=m-i;根据上次问题的一些答案分析,这个就是给赋值了,但是我还是不太理解,这个m=m-i是什么意思从后面的if(m==0)来看这个m=m-i 这个i是不是所有约数的合集?比如说6是完数这个m=m-i的正常情况应该是m=6;m=6-1-2-3;p 这样的情况?


#include"stdio.h"
int main()
{
int a[100];
int i,j,n,m;
for(j=2;j<1000;j++)
{
n=0;
m=j;
for(i=1;i<j;i++)
{
if((j%i)==0)
{
m=m-i;
a[n]=i;
n++;
}
}
if(m==0)
{
printf("%d is a wanshu\n",j);
for(i=0;i<n-1;i++)
printf("%d,",a[i]);
printf("%d\n",a[n-1]);
}
}
return 0;
}

[解决办法]
完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数。它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。

当j % i == 0成立。即i是j真因子
然后m减掉i,之所以减为了后文的条件判断if(m==0)
只有所有真因子都减掉,最后
m==0,才满足上文定义“它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。”
m != 0则不成立,不是完数!

热点排行