计算从 1 到 N 的数字对,其乘积可被 C++ 中的总和整除

给定一个数字 N。目标是找到从 1 到 N 的数字对,使得对的乘积等于对的总和。

让我们通过例子来理解。

输入- N=11

输出- 编号对的计数。从 1 到 N,乘积可被它们的总和整除是 − 1

说明- 数字 3 和 6 的乘积为 18,它们的和 9 整除 18。

输入- N=30

输出- 编号对的计数。从 1 到 N,乘积可被它们的总和整除是 − 12

解释- 对是 - (3, 6), (4,12), (5, 20), (6, 12), (6, 30), (8, 24), (9, 18), (10, 15), (12, 24), (15, 30), (20, 30), (21, 28)

对数 - 12

下面程序中使用的方法如下

我们将使用 FOR 循环从 1 到 N 遍历两次。对于每一个,我搜索 j 使得 (i,j) 的乘积可以被和 i+j 整除。suc i,j 对的增量计数使得 i!=j。

  • 以数字 N 作为输入。

  • 函数Sum_N(N)接受 N 并返回对的计数,使得数字的乘积可以被数字之和整除。

  • 从 i=1 遍历到 i<N。

  • 从 j=i+1 到 j<=N 遍历。

  • 取初始计数为 0。

  • 对于每个 i 和 j 计算 temp= (i*j)%(i+j)。

  • 如果 temp 为 0,则 sum 将产品完全除以。递增计数。

  • 在所有迭代结束后,计数将具有此类对的总数。

  • 返回计数作为结果。

示例

#include <bits/stdc++.h>
using namespace std;
int Sum_N(int N){
   int count = 0;
   for (int i = 1; i < N; i++){
      for (int j = i + 1; j <= N; j++){
         int temp = (j * i) % (j + i);
         if (!temp){
            count++;
         }
      }
   }
   return count;
}
int main(){
   int N = 20;
   cout<<"从 1 到 N 且乘积可被其总和整除的数对的计数为: "<<Sum_N(N);
   return 0;
}
输出结果

如果我们运行上面的代码,它将生成以下输出 -

从 1 到 N 且乘积可被其总和整除的数对的计数为: 6