检查亲和数对


友元数对或友好数对的概念是不是很有趣?那么,友元数对究竟是什么呢?

只有当第一个数的真因数之和等于第二个数的真因数之和时,这两个数才被称为友元数对。

另外,以防你忘了,毕达哥拉斯学派总是以公正和友谊等特性将数字联系起来。

问题陈述

实现一个程序来检查给定的数对是否为友元数对。

方法

我们首先考虑给定数对的真因数。将第一个数的真因数相加得到和。同样,将第二个数的真因数相加得到和。

如果第一个数的真因数之和等于第二个数的真因数之和,我们就称这对数为友元数对。否则,如果第一个数的真因数之和不等于第二个数的真因数之和,则这对数不是友元数对。

示例输入输出

输入

num1 = 220, num2 = 284

输出

220 and 280 are amicable pair

解释

考虑数字 220 和 284。

220 的真因数是 1、2、4、5、10、11、20、22、44、55 和 110。将所有这些因数相加,我们得到和为 284。现在取 284 的真因数。真因数是 1、2、4、71 和 142。将所有这些因数相加,我们得到和为 284。由于我们得到的两个和相等,我们可以说这对数

220 和 280 是友元数对。

输入

num1 = 220, num2 = 280

输出

220 and 280 are not amicable pair

解释

考虑数字 220 和 280。

220 的真因数是 1、2、4、5、10、11、20、22、44、55 和 110。将所有这些因数相加,我们得到和为 284。现在取 284 的真因数。真因数是 1、2、4、71 和 142。将所有这些因数相加,我们得到和为 284. 280 的真因数为 1, 2, 4, 5, 7, 8, 10, 14, 20, 28, 35, 40, 56, 70, 140。

将所有这些因数相加,我们得到和为 440。由于在这种情况下我们得到的两个和不相等,我们可以说数对 220 和 280 不是友元数对。

算法

步骤 1:输入数字。

步骤 2:找到两个数字的所有因数之和。

步骤 3:最后检查一个数字的因数之和是否等于另一个数字。

步骤 4:如果是,则它是友元数,否则不是。

下面是一个 C 程序,用于检查给定的数对是否为友元数对。

示例

#include<stdio.h>
int main(){
   int i,n1=220,n2=284,DivSum1=0,DivSum2=0;
   //Use one for loop and check for each number starting from 1 to n1 -1.
   for(int i=1;i<n1;i++){
    //Check for each number in the loop if it can divide the number firstNumber or not. If yes, add this number to the DivSum1. After the loop completes, DivSum1 includes the sum of all the divisors for firstNumber.
      if(n1 % i == 0){
         DivSum1 = DivSum1 + i;
      }
   }
   //Same way, determine the sum of all divisors for the second number and save it in DiviSum2.
   for(int i=1;i<n2;i++){
      if(n2 % i == 0){
         DivSum2= DivSum2+ i;
      }
   }
   //Last, check if the sum of divisors of the first number is equal to the second number or not. If it is equal, then print that the numbers are Amicable numbers. Otherwise the numbers are not amicable pairs.
   if((n1== DivSum2) && (n2 == DivSum1)){
      printf("%d and %d are Amicable numbers\n",n1,n2);
   }else{
      printf("%d and %d are not Amicable numbers\n",n1,n2);
   }
}

输出

执行后,将产生以下输出

220 and 284 are Amicable numbers.

结论

同样,我们可以通过输入任何一对数字来确定给定的数对是否为友元数对。本文解决了确定给定的数对是否为友元数对的挑战。这里提供了 C 编程代码,用于检查给定的数字是否构成友元数对。

更新于:2023年8月23日

3K+ 次浏览

开启你的职业生涯

完成课程后获得认证

开始学习
广告