HDoj:2040 親和數(C語言)
這個題比較簡單,只需要利用迴圈找出A、B的真約數,然後相加進行判斷,是否兩個數中的任何一個數都是另一個數的真約數之和,如果是就輸出YES,否則輸出NO。
下面貼上已AC的C語言程式碼:
#include<stdio.h>
#include<math.h>
int main()
{
int M,A,B,i,sum;
scanf("%d",&M); //輸入M,有M個測試樣例
while(M--)
{
sum=0;
scanf("%d%d",&A,&B);
for(i=2;i<=sqrt(A);i++)
{
if(A%i==0)
sum=sum+i+A/i;
}
if(sum+1==B) //1也算是A的約數,所以別忘了加上1
{
sum=0;
for(i=2;i<=sqrt(B);i++)
{
if(B%i==0)
sum=sum+i+B/i;
}
if(sum+1==A)
printf("YES\n");
else
printf("NO\n");
}
else
printf("NO\n");
}
return 0;
}