C语言求完数

C语言求完数,第1张

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

#include<stdioh>

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;j<i;j++)

{

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

}

for(h=0;h<k;h++)

{

s+=a[h];

}

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

}

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

}

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

#include<stdioh>

void main()

{

int m,s,i;

for(m=2;m<1000;m++)

{

s=0;

for(i=1;i<m;i++)

if((m%i)==0)s=s+i;

if(s==m)

{printf("%d=",m);

for(i=1;i<m;i++)

if(m%i==0 && i==1) printf("%d",i); / 修改 /

elseif(m%i==0)printf("+%d",i); / 添加 /

printf("\n");

}

}

}

//这里举例了一个求1000以内的完数算法,供你参考

#include <stdioh>

int ws(int a,int b,int c)

{

int d;

if (a>c)

{

if (a%c==0)

b+=c;

d=ws(a,b,c+1);

}

else if (c==a)

{

if (b==a)

{

return 1;

}

else return 0;

}

if (c==a-1&&d)

{

printf("%d is Prefect number:\t",a);

}

if (d&&(a%c==0))

{

printf("%d ",c);

}

else if (!d) return 0;

if (c==1)

{

putchar('\n');

return d;

}

}

int main(void)

{

int i;

for (i=1; i<=1000; i++)

ws(i,0,1) ;

return 0;

}

以上就是关于C语言求完数全部的内容,包括:C语言求完数、C语言求完数的程序、C语言程序设计求完数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9844260.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存