C语言求完数

C语言求完数,第1张

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

#include<stdio.h>

void main()

{

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

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

s=0

sum=0

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

{

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

k=0

for(j=1j<ij++)

{

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

}

for(h=0h<kh++)

{

s+=a[h]

}

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

}

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

}

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

C语言程序如下:

#include <stdio.h>

int main()

{

long int i,j,sum 

for(i=2i<100i++)

{   sum=0

for(j=2j<=i/2j++)

{

if(i%j==0)

{

sum=sum+j

}

}

if(i==sum+1)

printf("%d\n",i)

}

}

扩展资料:

如果一个数恰好等于它的因子之和,则称该数为“完全数”。

第一个完全数是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,有约数1、2、4、8、16、31、62、124、248、496,除去其本身496外,其余9个数相加,1+2+4+8+16+31+62+124+248=496。后面的完全数还有8128、33550336等等。

参考资料:百度百科-完全数

请对比修改的地方:

#include"stdio.h"

main()

{int i,c,n=1,sum=0

for(i=1i<=100i++)

{c=i

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

if(i%n==0) c=c-n

if(c==0)

{printf("%d\n",i)

sum++}

}

printf("100以内有%d个完数\n",sum)

}


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

原文地址:https://54852.com/yw/11011769.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存