1. 程式人生 > >HDoj:2040 親和數(C語言)

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