c语言用函数求完数 c语言调用函数求完数

怎么用C语言编写程序来找出2~5000中的完数?

1、解题思路:所谓完数是一些特殊的自然数。如果一个数恰好等于它的因子之和,则称该数为“完全数”。先定义一个函数用于判断一个数是否是完数,接着依次从2到5000依次循环判断。

成都创新互联是一家专注于成都网站设计、做网站与策划设计,井陉矿网站建设哪家好?成都创新互联做网站,专注于网站建设十余年,网设计领域的专业建站公司;建站业务涵盖:井陉矿等地区。井陉矿做网站价格咨询:028-86922220

2、参考代码:

#include stdio.h

int fun(int n){//判断n是否是完数 

int i,sum=0;

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

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

if(sum==i) return 1;

return 0;

int main ()

{

int i;

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

if(fun(i))

printf("%d ",i);

return 0; 

}

3、运行结果:6 28 496

c语言 调用函数,求m-n之间的所有完数

#includestdio.h 

int factorsum(int n)

{

int i,sum=0;

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

{

if(n%i==0)

sum+=i;

}

return sum; 

}

int main()

{

int n,m,i,flag;

while(scanf("%d%d",m,n)!=EOF)

{

flag =1;

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

{

if(i==factorsum(i))

{

if(flag)

{

printf("%d",i);

flag=0;

}

else

{

printf(" %d",i);

}

}

}

printf("\n");

}

return 0;

}

扩展资料:

注意事项

1、每一个完全数都可以表示成连续自然数的和

每一个完全数都可以表示成连续自然数的和,这些自然数并不一定是完全数的因数。例如:

6=1+2+3 28=1+2+3+4+5+6+7

496= 1+2+3+4+. • -+29+30+31

2、每一个完全数都是调和数

我们知道,如果一个正整数的所有因子的调和平均是整数,那么这个正整数便是调和数。而每 一个完全数都是调和数,例如: 对于完全数6 来说,1/1+1/2+1/3+1/6=2 对于完全数28来说,1/1+1/2+1/4+1/7+1/14+1/28=2 3 . 每一个完全数都可以表示为2 的一些连续正整数次幂之和 每一个完全数都可以表示为2 的一些连续正整数次幂之和,例如: 6=2^l+2^2

28=2^2+2^3+2^4

8128=2^6+2^7+2^8+2^9+2^10+2^11 +2^ 12

用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语言求完全数~~

#includestdio.h

void isPerfect(int m){ //定义判断一个数是否为完全数的函数isPerfect

int i,sum=0;

for(i=1;i=m/2;i++){

if(m%i==0){

sum+=i;

}

}

if(sum==m){

printf("你输入的这个数是完全数\n");

}

else

printf("你输入的这个数不是完全数\n");

}

main(){

int a;

printf("请输入一个整数a:\n");

scanf("%d",a);

isPerfect(a);//调用这个函数

}

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,n,sum;

int a,b;

scanf("%d%d",a,b);

for(n=a;n=b;n++)

{

sum=0;

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

{

if(n%i==0)

{sum=sum+i;}

}

if(sum==n)

{printf("%4d",n);}

}

return 0;

}


新闻名称:c语言用函数求完数 c语言调用函数求完数
URL链接:http://abwzjs.com/article/docjsop.html