Tìm một số có 4 chữ số vừa là số chính phương, vừa là số lập phương

30
Lập trình C++

Bài toán. Tìm số nguyên dương n = x2 = y3 (với x, y nguyên, n có 4 chữ số),

Với bài toán này, ta cần giải bằng thuật toán.

Vì  1000 <= y3 <= 9999.

Từ đó suy ra: 10 <= y <= 21.

Chính vì vậy ta sử dụng vòng lặp for duyệt từ 10 đến 21, tìm ra một số chính phương bằng y3 thỏa mãn là một số chính phương. Trong bài toán này, chúng ta chỉ cần tìm số nguyên dương n thỏa mãn điều kiện ghi vào file CPLP.OUT với dòng thứ nhất ghi ra số n cần tìm và dòng thứ hai ghi ra hay số x, y (cách nhau một dấu cách). Số cần tìm là số 4096 = 163 = 642.

Code tham khảo như sau:

#include <iostream>
#include <cmath>
using namespace std;
int cp(int n) {
    if ((float)sqrt(n) == (int)sqrt(n))
        return 1;
    else return 0;
}
int main() {
    freopen("CPLP.OUT","w",stdout);
    for (int i = 10; i < 22; i++) {
        if (cp(i*i*i)) {
            cout << i*i*i << endl;
            cout << i << " " << sqrt(i*i*i);
        }
    }
    return 0;
}