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;
}