Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

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


Đị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!