C++ L12 亲和数判断

题目描述

约数,又称因数。整数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;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值