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

Kiểm tra số có thể biểu diễn dạng a^b trong Python

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