Định lý cuối cùng Fermat: Với mũ n > 2, không tồn tại 3 số nguyên dương a, b, c thỏa a^n + b^n = c^n.
Nếu n <= 2: có nghiệm (số Pythagore).
Bài toán: Cho L, R, power. Kiểm tra định lý trong khoảng [L, R] với mũ power.
Ví dụ 1:
Đầu vào: L = 4, R = 12, power = 2
Đầu ra: 5, 12, 13
Ví dụ 2:
Đầu vào: L = 4, R = 12, power = 4
Đầu ra: No such value found
Phương pháp giải
Nếu power >= 3 => in "No example found!".
Ngược lại, duyệt a, b trong [L, R], tính c = (a^n + b^n)^(1/n). Kiểm tra c^n == a^n + b^n.
Chương trình minh họa
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;
}
Kết quả
Run 1 Example found with value : 3, 4, 5 Run 2 No example found!