Computer >> Máy Tính >  >> Lập trình >> C ++

Định lý cuối cùng của Fermat trong C ++

Định lý cuối cùng của Fermat trong lý thuyết số còn được gọi là Fermet’s phỏng đoán là một định lý phát biểu rằng với lũy thừa n lớn hơn 2. Không có ba giá trị a, b, c nào thỏa mãn -

a n + b n =c n

tức là nếu n <=2, a n + b n =c n

Nếu không, a n + b n ! =c n

Ví dụ về các giá trị cho n =2,

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

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

Trong bài toán này, chúng ta được cung cấp ba giá trị, L, R, dải biểu thị pow [L, R] và công suất. Nhiệm vụ của chúng tôi là xác minh định lý cuối cùng của fermat cho phạm vi và công suất đã cho.

Hãy lấy một ví dụ để hiểu vấn đề,

Ví dụ 1:

Đầu vào: L =4, R =12, công suất =2

Đầu ra: 5, 12, 13

Ví dụ 2:

Đầu vào: L =4, R =12, công suất =4

Đầu ra: Không tìm thấy giá trị nào như vậy

Phương pháp tiếp cận giải pháp:

Ở đây, chúng ta sẽ kiểm tra xem công suất có lớn hơn 2 hay không. Nếu giá trị lớn hơn, hãy in ra Không tìm thấy giá trị nào như vậy.

Kiểm tra giới hạn khác nếu có giá trị thỏa mãn điều kiện a n + b n =c n .

Chương trình minh họa hoạt động của giải pháp của chúng tôi,

Ví dụ

#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;
}

Đầu ra -

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