用 C 编写订婚数?


订婚数是一对两个数,其除数的和再加一个值与另一个数相等。

例如,(a, b) 为一对订婚数,当 s(a) = b + 1 且 s(b) = a + 1 时,其中 s(b) 为 b 的商和:一个等效条件是 σ(a) = σ(b) = a + b + 1,其中 σ 表示除数和函数。

第一几对订婚数是:(48, 75)、(140, 195)、(1050, 1925)、(1575, 1648)、(2024, 2295)、(5775, 6128)。

所有已知的订婚数对都具有相反的奇偶性。任何奇偶性相同的对都必须大于 1010。

算法

Step 1: Find the sum of all divisors for both numbers.
Step 2: Finally check if the sum of the divisors of number added by one is equal to the other number or not.
Step 3: If yes, it is a Betrothed number and otherwise not.


Input:a = 48 b = 75
Output:
48 and 75 are Betrothed numbers

说明

48 的除数:1、2、3、4、6、8、12、16、24。其和为 76。

75 的除数:1、3、5、15、25。其和为 49。

使用 for 循环,从 1 到 a-1 检查每个数。

在循环中为每个数检查其是否可以除以数 a。如果是,则将此数添加到 aDivisorSum。在循环完成后, aDivisorSum 包含 a 的所有除数的和。

以同样的方式,求出第二个数的所有除数的和,并将其保存在 bDivisorSum 中。

现在检查一个数的除数和是否等于另一个数加上 1。如果是,则打印两者均为订婚数。否则,它们不是。

示例

 实时演示

#include <stdio.h>
int main() {
   int i;
   int a,b;
   int aDivisorSum = 0;
   int bDivisorSum = 0;
   a=48 ;
   b=75 ;
   for( i = 1; i < a; i++) {
      if(a % i == 0) {
         aDivisorSum = aDivisorSum + i;
      }
   }
   for( i = 1; i < b; i++) {
      if(b % i == 0) {
         bDivisorSum = bDivisorSum + i;
      }
   }
   if(( a+1== bDivisorSum) && (b+1 == aDivisorSum)) {
      printf("%d and %d are Betrothed numbers
",a,b);    } else {       printf("%d and %d are not Betrothed numbers
",a,b);    } }

输出

48 and 75 are not Betrothed numbers

更新于: 04-Oct-2019

1K+ 次浏览

开启您的 职业

完成课程,获得认证

开始
广告