Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ทฤษฎีบทสุดท้ายของแฟร์มาต์ใน C++


ทฤษฎีบทสุดท้ายของแฟร์มาต์ในทฤษฎีจำนวนเรียกอีกอย่างว่า การคาดเดาของแฟร์เมต์ เป็นทฤษฎีบทที่ระบุว่าสำหรับกำลัง n มากกว่า 2 ไม่มีค่าสามค่า a, b, c ตรงตาม -

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 หรือไม่ หากมากกว่า พิมพ์ ไม่พบค่าดังกล่าว

มิฉะนั้นให้ตรวจสอบขีด จำกัด หากมีค่าตรงตามเงื่อนไข a 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!