亲和数

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

Sample Output

YES

NO

 1 #include <stdio.h>
 2
 3 int get_result(int a,int b);
 4
 5 int main(){
 6     int T;
 7     int a;
 8     int b;
 9
10     scanf("%d",&T);
11
12     while(T--){
13         scanf("%d%d",&a,&b);
14
15         if(get_result(a,b)==1)
16             printf("YES\n");
17
18         else
19             printf("NO\n");
20     }
21
22     return 0;
23 }
24
25 int get_result(int a,int b){
26     int i;
27     int a_result;
28     int b_result;
29
30     a_result=0;
31     for(i=1;i<a;i++){
32         if(a%i==0)
33             a_result+=i;
34     }
35
36     b_result=0;
37     for(i=1;i<b;i++){
38         if(b%i==0)
39             b_result+=i;
40     }
41
42     if(a_result==b && b_result==a)
43         return 1;
44
45     else
46         return 0;
47 }
时间: 2024-12-14 06:04:54

亲和数的相关文章

Python练习题 048:Project Euler 021:10000以内所有亲和数之和

本题来自 Project Euler 第21题:https://projecteuler.net/problem=21 ''' Project Euler: Problem 21: Amicable numbers Let d(n) be defined as the sum of proper divisors of n (numbers less than n which divide evenly into n). If d(a) = b and d(b) = a, where a ≠ b

HDU 2040:亲和数

亲和数 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 20775    Accepted Submission(s): 12590 Problem Description 古希腊数学家毕达哥拉斯在自然数研究中发现,220的全部真约数(即不是自身的约数)之和为: 1+2+4+5+10+11+20+22+44+55+110=284. 而2

杭电OJ -- 2040 亲和数

#include <iostream> using namespace std; int qh_num(int a)//该函数主要用来获得数a的亲和数 { int sum = 0; for(int i = 1; i <= (int)a / 2; ++i) { if (a % i == 0) sum += i; } return sum; } int main() { int m; int a, b; cin >> m; while (m--) { cin >> a

500万以内的亲和数

//时间复杂度为O(N*log(N))//时间复杂度准确做法://n * (1 + 1/2 + 1/3 + 1/4 + ..... + 1/n) ~~ N*InN//所以第二个for循环的时间复杂度约为O(N*log(N)) #include <iostream> #include <cstdio> #include <cstring> #include <cstdlib> #include <cmath> #include <map>

[hdu-2040] 亲和数

亲和数 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 20184    Accepted Submission(s): 12195 Problem Description 古希腊数学家毕达哥拉斯在自然数研究中发现,220的所有真约数(即不是自身的约数)之和为: 1+2+4+5+10+11+20+22+44+55+110=284. 而2

Project Euler 95:Amicable chains 亲和数链

Amicable chains The proper divisors of a number are all the divisors excluding the number itself. For example, the proper divisors of 28 are 1, 2, 4, 7, and 14. As the sum of these divisors is equal to 28, we call it a perfect number. Interestingly t

大数亲和数对的求法 友元数对

做了几天的亲和数对,今天晚上终于ac了,不容易呀,下面讲一讲我的做法吧,希望能够帮助大家 题目如下: 题目描述 数字220和284是一对友元数字,因为220的所有因子的和是284,284的所有因子的和是220. 你能在小于10000的数中找出有多少对友元数字么?那是必须的. 你的任务是在给定的区间[a,b]中找出有多少对友元数字. 输入 有多组测试数据. 每组数据包括两个整数a,b(1<=a<=b<=5000000). 输入到文件末尾. 输出 对于每组输入,输出在该区间内的有多少对友元数

HDProblem-2203亲和数(KMP算法)

1 #include<stdio.h> 2 #include<string.h> 3 #include<stdlib.h> 4 #define N 100005 5 char s1[2*N],s2[N]; 6 int next[N],l1,l2; 7 8 void get_next(char *str,int len) 9 { 10 int i=-1,j=0; 11 next[0]=-1; //注意给next[0]赋初值 12 len=strlen(str); 13 i

1038: 亲和数

1038: 亲和数 时间限制: 1 Sec  内存限制: 128 MB提交: 254  解决: 208[提交][状态][讨论版] 题目描述 古希腊数学家毕达哥拉斯在自然数研究中发现,220 的所有真约数(即不是自身的约数)之和为: 1+2+4+5+10+11+20+22+44+55+110=284.而 284 的所有真约数为 1.2.4.71. 142,加起来恰好为 220.人们对这样的数感到很惊奇,并称之为亲和数.一般地讲,如果两个数中任何一个数都是另一个数的真约数之和,则这两个数就是亲和数.