সংখ্যা তত্ত্বে ফারম্যাটের শেষ উপপাদ্যকে ফারম্যাটের অনুমান (Fermat's Conjecture)-ও বলা হয়। এটি একটি উপপাদ্য যা বলে যে ঘাত n ২-র চেয়ে বড় হলে, কোনো তিনটি মান a, b, c নিচের সমীকরণকে সন্তুষ্ট করে না:
an + bn = cn
অর্থাৎ, যদি n <= 2, an + bn = cn
অন্যথায়, an + bn != cn
n = 2-এর জন্য মানগুলোর উদাহরণ:
3, 4, 5 => 32 + 42 = 9 + 16 = 25 = 52।
5, 12, 13 => 25 + 144 = 169 = 132।
এই সমস্যায়, আমাদের তিনটি মান দেওয়া হয়েছে: L, R, pow যা রেঞ্জ [L, R] এবং ঘাত নির্দেশ করে। আমাদের কাজ হলো প্রদত্ত রেঞ্জ এবং ঘাতের জন্য ফারম্যাটের শেষ উপপাদ্য যাচাই করা।
উদাহরণ দিয়ে সমস্যাটি বোঝা যাক
উদাহরণ ১:
ইনপুট: L = 4, R = 12, power = 2
আউটপুট: 5, 12, 13
উদাহরণ ২:
ইনপুট: L = 4, R = 12, power = 4
আউটপুট: No such value found
সমাধানের পদ্ধতি
এখানে, আমরা চেক করব ঘাত ২-র চেয়ে বড় কিনা। যদি বড় হয়, তবে No such value found প্রিন্ট করব।
অন্যথায় লিমিটের ভিতরে চেক করব an + bn = cn সন্তুষ্ট করে এমন কোনো মান আছে কিনা।
সমাধানটি ব্যাখ্যা করে প্রোগ্রাম
#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!