1. 程式人生 > >如何判斷親和數

如何判斷親和數

內容:判斷親和數

目的:掌握迴圈與if語句

程式程式碼:

/*   
* 程式的版權和版本宣告部分:   
* Copyright (c) 2013, 煙臺大學計算機學院   
* All rights reserved.   
* 檔名稱:test.cpp   
* 作    者:匡效國   
* 完成日期:2013 年 4 月 10 日   
* 版 本 號:v1.0   
*  
* 對任務及求解方法的描述部分:   
* 輸入描述:輸入資料第一行包含一個數M,接下有M行,每行一個例項,包含兩個整數A,B; 其中 0<=A,B<=99999。 
* 問題描述:如果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。
* 程式輸出:見下圖   
* 問題分析:略  
* 演算法設計:略   
*/    
#include <iostream>  
using namespace std;  
int main()  
{  
    int M,A,B,i,j,sum1,sum2;//i和j用來迴圈,sum1和sum2用來記錄A和B的因子的和
    cin>>M;  
    for(i=1;i<=M;i++)//迴圈輸入M次  
    {  
        sum1=0;  
        sum2=0;  
        cin>>A>>B;  
        for(j=1;j<A;j++)//迴圈A次得到A的因子的和sum1  
        {  
            if(A%j==0)  
                sum1+=j;  
        }  
        for(j=1;j<B;j++)//迴圈B次得到B的因子的和sum2  
        {  
            if(B%j==0)  
                sum2+=j;  
        }  
        if(sum1==B&&sum2==A)//如果sum1=sum2,說明A與B為親和數,輸出“Yes”  
            cout<<"YES"<<endl;  
        else//若sum1!=sum2,輸出“No”  
            cout<<"NO"<<endl;  
    }  
    return 0;  
}  

執行結果:


感悟:熟能生巧