Cho số n. Kiểm tra có tồn tại a, b > 1 sao cho n = a^b không.
Ví dụ: 125 = 5^3 → True.
Thuật toán
- Nếu n == 1 → True.
- Duyệt i từ 2 đến sqrt(n):
- val = log(n) / log(i).
- Nếu val gần như nguyên (sai số < 1e-8) → True.
- False.
Ví dụ code (Python)
import math
def solve(num):
if num == 1:
return True
for i in range(2, int(math.isqrt(num)) + 1):
val = math.log(num) / math.log(i)
if abs(val - round(val)) < 1e-10:
return True
return False
n = 125
print(solve(n))
Đầu vào
125
Đầu ra
True