Problem Description
古希臘數學家畢達哥拉斯在自然數研究中發現,220的所有真約數(即不是自身的約數)之和為:
1+2+4+5+10+11+20+22+44+55+110=284。
1* 220=220;2* 110=220;4* 55=220;5* 44=220;10*20=220; 11 *20=220;
由于220的所以真約數不包括自己,
所以,220的所有真約數為:1,2,4,5,10,11,20,22,44,55,110;
而284的所有真約數為1、2、4、71、 142,加起來恰好為220。人們對這樣的數感到很驚奇,并稱之為親和數。一般地講,如果兩個數中任何一個數都是另一個數的真約數之和,則這兩個數就是親和數。
你的任務就編寫一個程序,判斷給定的兩個數是否是親和數
Input
輸入數據第一行包含一個數M,接下有M行,每行一個實例,包含兩個整數A,B; 其中 0 <= A,B <= 600000 ;
Output
對于每個測試實例,如果A和B是親和數的話輸出YES,否則輸出NO。
Sample Input
2
220 284
100 200
Sample Output
YES
NO
代碼如下:
#include< stdio.h>
int shu(int x) //定義一個函數,目的就是為了求一個數的所謂親和數
{int i;int sum=0;for(i=1;i < x;i++){if(x%i==0)sum=sum+i;}return sum;
}int main()
{int a,b,n;scanf("%d",&n);while(n--){scanf("%d%d",&a,&b);shu(a);if(shu(a)==b)//如果說,一個數的親和數之和與另一個數相等,就輸出YES;printf("YES\n");elseprintf("NO\n");//否則輸出NO;}return 0;
}