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

C++의 페르마의 마지막 정리

<시간/>

정수론의 페르마의 마지막 정리는 페르메의 추측 으로도 알려져 있습니다. 는 거듭제곱 n이 2보다 크다는 것을 나타내는 정리입니다. a, b, c의 세 값은 −

를 만족하지 않습니다.

a n + b n =c n

즉, n <=2인 경우 a n + b n =c n

그렇지 않으면 a n + b n !=c n

n =2에 대한 값의 예

3, 4, 5 => 3 2 + 4 2 =9 + 16 =25 =5 2 .

5, 12, 13 => 25 + 49 =169 =13 2 .

이 문제에서는 L, R, 범위를 나타내는 pow [L, R] 및 거듭제곱의 세 가지 값이 제공됩니다. 우리의 임무는 주어진 범위와 거듭제곱에 대한 페르마의 마지막 정리를 확인하는 것입니다.

문제를 이해하기 위해 예를 들어보겠습니다.

예시 1:

입력: L =4, R =12, 전력 =2

출력: 5, 12, 13

예시 2:

입력: L =4, R =12, 전력 =4

출력: 해당 값이 없습니다

해결 방법:

여기서는 거듭제곱이 2보다 큰지 여부를 확인합니다. 더 크면 해당 값을 찾을 수 없습니다.

그렇지 않으면 n 조건을 만족하는 값이 있으면 한계를 확인하십시오. + b n =c n .

우리 솔루션의 작동을 설명하는 프로그램,

예시

#include <iostream>
#include <math.h>
using namespace std;

void checkFermatsLastTh(int L, int R, int n) {

   if (n >= 3)
   cout<<"No example found!";
   else {
      for (int a = L; a <= R; a++)
      for (int b=a; b<=R; b++)
      {
         int sum = pow(a, n) + pow(b, n);
         double c = pow(sum, 1.0/n);
         int cpowN = pow((int)c, n);
         if (cpowN == sum)
      {
         cout<<"Example found with value : "<<a<<", "<<b<<", "<<c;
         return;
      }
   }
   
   cout << "No example found!";
   }
}

int main() {
   
   int L = 3, R = 15, power = 2;
   cout<<"Run 1 \n";
   checkFermatsLastTh(L, R, power);
   
   L = 5, R = 42; power = 5;
   cout<<"\n\nRun 2\n";
   checkFermatsLastTh(L, R, power);

   return 0;
}

출력 -

Run 1
Example found with value : 3, 4, 5
Run 2
No example found!