2009-01-15 16:30:47來源不明
2007 NPSC B. 友好數
/***********************************************************/
- #include<stdio.h>
- #include<stdlib.h>
- #include<math.h>
- #include<string.h>
- main()
- {
- int x,y,a,b,c,d;
- while(scanf("%d",&x)==1&&x!=0)
- {
- c=0;d=0;
- for(a=1;a<x;a++)
- {
- if(x%a==0)
- c=c+a; /*算出X的因數總和=友好數?!*/
- }
- for(b=1;b<c;b++)
- {
- if(c%b==0)
- d=d+b; /*算出C的因數總和 倒推回去 算出友好數的因數和*/
- }
- if(d==x&&x!=c) /*判斷因數和相等 但是 此數不等於他的因數和*/
- printf("%d\n",c);
- else if(d==x&&x==c)
- printf("=%d\n",x);
- else
- printf("0\n");
- }
- return 0;
- }
/****************************更快的版本************************/
- #include<stdio.h>
- #include<stdlib.h>
- #include<math.h>
- main()
- {
- int x,y,a,b,c,d;
- while(scanf("%d",&x)==1&&x!=0)
- {
- c=0;d=0;
- for(a=1;a<=(int)sqrt(x);a++)
- {
- if(x%a==0)
- c=c+a+(x/a)*(x/a!=a&&a!=1);
- }
- for(b=1;b<=(int)sqrt(c);b++)
- {
- if(c%b==0)
- d=d+b+(c/b)*(c/b!=b&&b!=1);
- }
- if(d==x&&x!=c) /*判斷因數和相等 但是 此數不等於他的因數和*/
- printf("%d\n",c);
- else if(d==x&&x==c)
- printf("=%d\n",x);
- else
- printf("0\n");
- }
- return 0;
- }
下一篇:2005 NPSC A. 測謊機