【親和数】
4089 ワード
テーマリンク:http://115.28.203.224/problem.php?cid=1011&pid=0
テーマの説明
古代ギリシャの数学者ピタゴラスは自然数の研究において、220のすべての真公約数(すなわち、自身の約数ではない)の和は、1+2+4+5+10+11+20+22+55+110=284であることを発見した.284の全部の真公約数は1、2、4、71、142で、合わせてちょうど220です.この数に人々は驚き、親和数と呼ばれています.一般的には、二つの数のうちのどれかが別の数の真の約数の和であれば、この二つの数は親和数である.あなたの任務は一つのプログラムを作成して、与えられた二つの数が親和数かどうかを判断します.
入力
入力データの最初の行は一つの数Mを含み、次にM行があり、各行の一例は二つの整数A、Bを含む.そのうち0<=A、B<=600 000;
出力
各テスト例では、AとBが親和数であればYESを出力し、そうでなければNOを出力します.
サンプル入力
2220 284100
サンプル出力
YES SNO
コード
テーマの説明
古代ギリシャの数学者ピタゴラスは自然数の研究において、220のすべての真公約数(すなわち、自身の約数ではない)の和は、1+2+4+5+10+11+20+22+55+110=284であることを発見した.284の全部の真公約数は1、2、4、71、142で、合わせてちょうど220です.この数に人々は驚き、親和数と呼ばれています.一般的には、二つの数のうちのどれかが別の数の真の約数の和であれば、この二つの数は親和数である.あなたの任務は一つのプログラムを作成して、与えられた二つの数が親和数かどうかを判断します.
入力
入力データの最初の行は一つの数Mを含み、次にM行があり、各行の一例は二つの整数A、Bを含む.そのうち0<=A、B<=600 000;
出力
各テスト例では、AとBが親和数であればYESを出力し、そうでなければNOを出力します.
サンプル入力
2220 284100
サンプル出力
YES SNO
コード
1 #include
2 using namespace std;
3 int main()
4 {
5 int a, b, suma, sumb, i, j, m;
6 cin>>m;
7 for (i = 1; i <= m; i++)
8 {
9 cin>>a>>b;
10 suma = 0;
11 for (j = 1; j < a; j++)
12 {
13 if (a%j == 0)
14 suma += j;
15 }
16 sumb = 0;
17 for (j = 1; j < b; j++)
18 {
19 if (b % j == 0)
20 sumb += j;
21 }
22 if (a==sumb && b==suma)
23 cout<<"YES"<<endl;
24 else
25 cout<<"NO"<<endl;
26 }
27 return 0;
28 }