1. 程式人生 > >HDU2040-親和數

HDU2040-親和數

題目出自杭電
題目
首先解釋何謂親和數
親和數是對於兩個數來說的。如果兩個數a和b,a的所有除本身以外的因數之和等於b,b的所有除本身以外的因數之和等於a,則稱a,b是一對親和數。
思路:對於輸入的數A,算出它的所有真約數的和C,若C=B,則A和B是親和數。反之不是。
上程式碼

#include <stdio.h>
int n,m;
int sum(int n)
{
    int sum =1,i=2;
    while(n>i)
    {
        if(n%i==0)
        {
            sum += i;
        }i++;

    }
    return
sum; } int main() { int n,m,a; scanf("%d",&a); getchar(); while(a--) { scanf("%d %d",&n,&m); if(sum(n)==m && n==sum(m)) printf("YES\n"); else printf("NO\n"); } return 0; }

寫在最後:親和數的傳說很有意思⊙▽⊙
據說,畢達哥拉斯的一個門徒向他提出這樣一個問題:“我結交朋友時,存在著數的作用嗎?”畢達哥拉斯毫不猶豫地回答:“朋友是你的靈魂的倩影,要像220和284一樣親密。

”又說“什麼叫朋友?就像這兩個數,一個是你,另一個是我。”從此,把220和284叫做“親和數”或者叫“朋友數”或叫“相親數”。這就是關於“親和數”這個名稱來源的傳說。220和284是人類最早發現,又是最小的一對親和數。
yeah~my friend 你是我的220,我是你的284。