1912: 亲和数
Time Limit: 1 Sec Memory Limit: 64 MB Submit: 375 Solved: 184 [Submit][Status][Web Board]Description
如果a的因子和等于b,b的因子和等于a,且a≠b,则称a,b为亲密数对。 比如220的所有真约数(即不是自身的约数)之和为: 1+2+4+5+10+11+20+22+44+55+110=284。 284的所有真约数和为: 1+2+4+71+142=220。 你的任务就编写一个程序,判断给定的两个数是否是亲和数
Input
输入数据第一行包含一个数M,接下有M行,每行一个实例,包含两个整数A,B; 其中 0≤A,B≤99999。
Output
对于每个测试实例,如果A和B是亲和数的话输出YES,否则输出NO。
Sample Input
2
220 284
100 200
Sample Output
YES
NO
#include<stdio.h>
int main()
{
int m,n,p,i;
int sum1,sum2;
scanf("%d",&p);
for(i=0;i<p;i++)
{
scanf("%d %d",&m,&n);
sum1=sum(m);
sum2=sum(n);
if(sum1==n&&sum2==m)
printf("YES\n");
else
printf("NO\n");
}
return 0;
}
int sum(int n)
{
int i,k;
int a[1000];
int sum=0,j=0;
for(i=1;i<n;i++)
{
if(n%i==0)
{
a[j++]=i;
k=j;
}
}
for(j=0;j<k;j++)
{
sum=sum+a[j];
}
return sum;
}