C ++程序查找唯一对,以使每个元素小于或等于N

在本文中,我们将讨论一个程序,以查找元素数小于或等于N并遵循某些特定条件的唯一数字对-

  • 两个数字之差的平方必须等于这两个数字的LCM。

  • 这两个数字的HCF可以表示为任何两个连续数字的乘积。

解决此问题的最佳方法是采用两个连续的数字(从1开始)并找到这些数字乘积的倍数。然后在倍数中,要指定一对数字,我们需要检查一对数字是否满足第一个给定条件。

例如,假设2和3。它们的乘积为6。现在,如果我们继续乘以6的倍数,我们将得到6、12、18、24…一次取两个数字,我们检查是否两个连续数字之间的差异平方(在这种情况下为36)等于这些数字的LCM。在这种情况下,我们最终得到的对是12和18。

推广方程式,我们得到两个数字分别为Z *(Z *(Z + 1))和(Z + 1)*(Z *(Z + 1)),其中Z是HCF(连续对)中的第一个数字产品)。

最后,使用值应小于N的条件,我们得到

(Z + 1)*(Z *(Z + 1))<= N或Z 3 +(2 * Z 2)+ Z <= N.

示例

#include <iostream>
using namespace std;
int main() {
   int N = 489, pairs, i = 1;
   //counting the number of pairs having elements less than N
   while((i*i*i) + (2*i*i) + i <= N) {
      i++;
   }
   pairs = i;
   cout << "Pairs :" << endl;
   //printing the two elements of the pair
   for(int j = 1; j < pairs; j++) {
      cout << j*(j*(j+1)) << " " << (j+1)*(j*(j+1)) << endl;
   }  
   return 0;
}

输出结果

Pairs :
2 4
12 18
36 48
80 100
150 180
252 294
392 448