/完数,即完美数,一个数如果恰好等于除它本身外的因子之和,这个数就称为完数。例如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语言程序设计求完数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)