设a<b是正整数,如果a的因子和是b,b的因子和是a,则称a,b是亲和数对,
例如:
220的因子和是1+2+4+5+10+11+20+22+44+55+110=284
284的因子和是1+2+4+71+142=220
220,284是最小的一对亲和数,计算
(1)a<100000时的亲和数对
(2)a<10000000时的亲和数对
(3)a<500000000时的亲和数对
答案:
#include <stdio.h>
#include <math.h>
long topgene(long x)
{long i,ii,top=1;
i=sqrt(x);
for (ii=2;ii<i;ii++)
if (x%ii==0)
top+=ii+x/ii;
if (ii*ii==x) top+=x;
return(top);
}
main()
{long i,ii,max=-1;
printf("\ninput the top:");
while(max<=0)
scanf("%ld",&max);
for (i=2;i<max;i++)
{ii=topgene(i);
if(i>ii&&(i%2+ii%2)!=1&&(i==topgene(ii)))
printf("%10ld%10ld\n",i,ii);
}
}
正文
亲自数问题2008-08-16 18:11:00
【评论】 【打印】 【字体:大 中 小】 本文链接:http://blog.pfan.cn/yzrj/37659.html
阅读(1642) | 评论(0)
版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论