• 亲和数(因子和)


    Problem Description

    古希腊数学家毕达哥拉斯在自然数研究中发现,220的所有真约数(即不是自身的约数)之和为:

    1+2+4+5+10+11+20+22+44+55+110=284。

    而284的所有真约数为1、2、4、71、 142,加起来恰好为220。人们对这样的数感到很惊奇,并称之为亲和数。一般地讲,如果两个数中任何一个数都是另一个数的真约数之和,则这两个数就是亲和数。

    你的任务就编写一个程序,判断给定的两个数是否是亲和数
     
    Input
    输入数据第一行包含一个数M,接下有M行,每行一个实例,包含两个整数A,B; 其中 0 <= A,B <= 600000 ;
     
    Output
    对于每个测试实例,如果A和B是亲和数的话输出YES,否则输出NO。
     
    Sample Input
    2 220 284 100 200
        
                比较快速的计算因子和,到根下。
           
     1 #include<iostream>
     2 #include<iomanip>
     3 //#include<bits/stdc++.h>
     4 #include<cstdio>
     5 #include<algorithm>
     6 #include<cmath>
     7 #define PI  3.14159265358979
     8 #define LL long long
     9 #define INF  10000001000
    10 #define  eps   0.00000001
    11 using namespace std;
    12 int main()
    13 {
    14    int T;
    15     cin>>T;
    16     while(T--)
    17     {
    18         int a,b;
    19         cin>>a>>b;
    20         int sum1=0,sum2=0;
    21         for(int i=2;i<=sqrt(a);++i)
    22         {
    23             if(a%i==0) {if(a/i==i) sum1+=i;
    24             else {sum1+=i,sum1+=a/i;}}
    25         }
    26         for(int i=2;i<=sqrt(b);++i)
    27         {
    28               if(b%i==0) {if(b/i==i) sum2+=i;
    29             else {sum2+=i,sum2+=b/i;}}
    30         }
    31         sum1++;sum2++;
    32        // cout<<sum1<<" "<<sum2;return 0;
    33         if(sum1==b&&sum2==a) cout<<"YES"<<endl;
    34         else cout<<"NO"<<endl;
    35 
    36     }
    37 
    38 
    39 }
    View Code
  • 相关阅读:
    java自定义注解教程
    java8 LocalDateTime时间格式化
    java8新特性Stream用法详解
    java将数组转换成list集合
    elestaticsearch原生写法创建mapping
    springboot-mybatis-plus生成器
    jQuery.bind() 函数详解
    CSS3 中的 rem 值与 px 之间的换算
    console.log的应用
    JQuery中$(document)是什么意思有什么作用
  • 原文地址:https://www.cnblogs.com/Auroras/p/10803331.html
Copyright © 2020-2023  润新知