Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

ตรวจสอบว่าเลขสามารถเขียนในรูป a^b ได้หรือไม่ด้วย Python

โจทย์: กำหนดเลข n ตรวจสอบว่ามี Integer a, b (b > 1) ทำให้ n = a^b หรือไม่

ตัวอย่าง

n = 125 → True (5³)

อัลกอริทึม

  1. ถ้า n == 1 → True
  2. วน i = 2 ถึง √n:
    • val = log(n) / log(i)
    • ถ้า val ใกล้เคียง Integer (diff < 1e-8) → True
  3. False

โค้ดตัวอย่าง (C++ → 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))

Input / Output

Input: 125
Output: True
หมายเหตุ: โค้ดต้นฉบับเป็น C++ แปลงเป็น Python ใช้ math.log และ math.isqrt สำหรับประสิทธิภาพ