如何判斷親和數
阿新 • • 發佈:2019-01-09
內容:判斷親和數
目的:掌握迴圈與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; }
執行結果:
感悟:熟能生巧