Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

각 요소가 N보다 작거나 같도록 고유한 쌍을 찾는 C++ 프로그램

<시간/>

이 기사에서 우리는 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