题目描述
约数,又称因数。整数a除以整数b(b≠0) 除得的商正好是整数而没有余数,就说b是a的约数。
亲和数,指两个正整数a、b,a的全部约数(本身除外)之和等于b;并且b的全部约数(本身除外)之和等于a。
例如:a = 220,b = 284,是一对亲和数,因为:
220的约数(本身除外)之和 = 1 + 2 + 4 + 5 + 10 + 11 + 20 + 22 + 44 + 55 + 110 = 284
284的约数(本身除外)之和 = 1 + 2 + 4 + 71 + 142 = 220
给定n对正整数,判断每对数是否为亲和数。
输入
第1行是一个正整数n,1 <= n <= 100,表示n对正整数;
接下来有n行,每行包含一对(两个)正整数(1~2000000),两数之间用一个空格隔开。
输出
输出n行,每行是一个整数,如果对应输入行的一对数是亲和数,输出1;
否则输出0。
#include<iostream>
using namespace std;
int main(){
long long n;
cin >> n;
int a,b;
for(int i = 1;i<=n;i++){
int s=0,s1=0;
cin >> a >> b;
for(int j=1;j<a;j++){
if(a%j==0){
s+=j;
}
}
for(int k=1;k<b;k++){
if(b%k==0){
s1+=k;
}
}
if(s1==a&&s==b){
cout << 1<<endl;
}
if(s1!=a||s!=b){
cout << 0<<endl;
}
}
return 0;
}