您的位置:

c语言的完数,完数C语言程序

本文目录一览:

c语言 完全数

#includestdio.h

void main()

{

int i,n;

int s=0;

printf("input a number N(1N=10000)\n");

while(scanf("%d",n)!=1) //scanf的返回值是成功读取的参数个数,输入某个字符就退出循环了

{

s=0; //每次都要清零

for(i=1;i=n;i++)

if(n%i==0)

s=s+i;

if(s==n) //if/else语句应该放在while循环体内,每次循环都会读入一个数,每个数都要作判断

printf("yes\n");

else

printf("no\n");

}

}

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

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

根据该定义 可以得出判断完数的函数如下:

#include stdio.h

int is_perfect_number(int n)

{

int i,s=0;

for(i = 1; i =n/2; i ++)

if(n%i == 0) s+= i;//统计所有真因子的和。

if(s == n) return 1;//如果与原值相等,则该数为完数。

return 0;//不是完数。

}

根据该函数,只需要对需要打印的范围内1 ~1000做遍历,并逐一调用该函数判断,如果返回1则打印即可。

完整代码如下:

#include stdio.h

int is_perfect_number(int n)

{

int i,s=0;

for(i = 1; i =n/2; i ++)

if(n%i == 0) s+= i;//统计所有真因子的和。

if(s == n) return 1;//如果与原值相等,则该数为完数。

return 0;//不是完数。

}

int main()

{

int n;

for(n = 1; n 1000; n++)

if(is_perfect_number(n)) printf("%d,",n);

}

C语言中的完数是什么意思

欧几里德证明了:一个偶数是完数,当且仅当它具有如下形式:2^(p-1)*(2^p-1)

其中2^p-1是素数

完全数(Perfect number)是一些特殊的自然数:它所有的真因子(即除了本身以外的约数

)的和,恰好等于它本身。

例如:第一个完全数是6,它有约数1、2、3、6,除去它本身6外,其余3个数相加,1+2+3

=6。第二个完全数是28,它有约数1、2、4、7、14、28,除去它本身28外,其余5个数相加

,1+2+4 + 7 + 14=28。后面的数是496,8128。

古希腊数学家欧几里德是通过 2^(n-1)*(2^n-1) 的表达式发现头四个完全数的。

当 n = 2^1*(2^2-1) = 6

当 n = 2^2*(2^3-1) = 28

当 n = 2^4*(2^5-1) = 496

当 n = 2^6*(2^7-1) = 8128

欧几里德证明了:一个偶数是完数,当且仅当它具有如下形式:2^(n-1)*(2^n -1)。

尽管没有发现奇完数,但是当代数学家奥斯丁·欧尔(Oystein Ore)证明,若有奇完全

数,则其形状必然是12p + 1或36p + 9的形式,其中p是素数。在1018以下的自然数中奇完

数是不存在的。

C语言求完数

/*完数,即完美数,一个数如果恰好等于除它本身外的因子之和,这个数就称为完数。例如6=1+2+3.(6的因子是1,2,3)*/

#includestdio.h

void main()

{

int i,j,k,h,s,sum;

int a[200];//20个是不够的

s=0;

sum=0;

for(i=2;i=1000;i++)

{

s=0;//此处s=0一定要加,因为前几次循环的时候s的值已经改变

k=0;

for(j=1;ji;j++)

{

if((i%j)==0){a[k]=j;k++;}

}

for(h=0;hk;h++)

{

s+=a[h];

}

if(i==s){printf("%d ",i);sum++;}

}

printf("完数的个数:%d\n",sum);

}

时间太紧,没注意程序的简洁性和效率,这个需要你自己改了!

c语言求解完数!

#includestdio.h

int main()

{

int i,j,sum=0;

int count=0;//计算完数的和

for(i=2;i1000;i++)

{

for(j=1;ji;j++)

{

if(i%j==0) sum=sum+j;

}

if(sum==i)

{

printf("%d 是完数\n",i);

count+=i;

}

sum=0;

}

printf("完数和为: %d\n",count);

return 0;

}

用C语言打印“完数”

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

根据该定义 可以得出判断完数的函数如下:

#include stdio.h

int is_perfect_number(int n)

{

    int i,s=0;

    for(i = 1; i =n/2; i ++)

        if(n%i == 0) s+= i;//统计所有真因子的和。

    if(s == n) return 1;//如果与原值相等,则该数为完数。

    

    return 0;//不是完数。

}

根据该函数,只需要对需要打印的范围内所有数做遍历,并逐一调用该函数判断,如果返回1则打印即可。