C++程式,查詢每個元素小於等於N的唯一數對


在本文中,我們將討論一個程式,該程式用於查詢元素小於等於 N 的唯一數對,並遵循某些條件:

  • 兩個數字之間差的平方必須等於這兩個數字的最小公倍數。

  • 這兩個數字的最大公約數可以表示為任意兩個連續數字的乘積。

解決此問題的最佳方法是從 1 開始取兩個連續的數字,並找到這些數字乘積的倍數。然後,在這些倍數中,為了指定一對數字,我們需要檢查這對數字是否滿足第一個給定的條件。

例如,考慮 2 和 3 的情況。它們的乘積是 6。現在,如果我們繼續使用 6 的倍數,我們將得到 6、12、18、24……一次取兩個數字,我們檢查兩個連續數字之間差的平方(在這種情況下為 36)是否等於這些數字的最小公倍數。最終,我們得到這對數字為 12 和 18。

概括方程,我們得到這兩個數字為 Z * (Z*(Z+1)) 和 (Z+1) * (Z*(Z+1)),其中 Z 是最大公約數(連續對乘積)中的第一個數字。

最後,使用值應小於 N 的條件,我們得到

(Z+1) * (Z*(Z+1)) <= N 或 Z³ + (2*Z²) + 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

更新於:2019年10月3日

94 次瀏覽

開啟您的職業生涯

完成課程後獲得認證

開始學習
廣告
© . All rights reserved.