正文

亲自数问题2008-08-16 18:11:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/yzrj/37659.html

分享到:

设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);
     }      
} 

阅读(1641) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册