ภาพรวม
Achilles Number คือจำนวนที่เป็น Powerful แต่ไม่ใช่ Perfect Power
- Powerful: ทุกเฉพาะ因數 p ของ n มี p² หาร n ลงตัว (พยัญชนะปรากฏ ≥ 2 ครั้ง)
- Perfect Power: n = aᵇ สำหรับ a>1, b>1
ตัวอย่าง
108 = 2² × 3³
- Powerful: 2²|108, 3²|108 ✓
- Perfect Power: 108 ไม่ใช่ aᵇ → ✓
- →
True
โค้ด Python
from math import sqrt, log
def check_powerful(n):
while n % 2 == 0:
p = 0
while n % 2 == 0:
n //= 2
p += 1
if p == 1:
return False
for factor in range(3, int(sqrt(n)) + 1, 2):
p = 0
while n % factor == 0:
n //= factor
p += 1
if p == 1:
return False
return n == 1
def check_power(a):
if a == 1:
return True
for i in range(2, int(sqrt(a)) + 1):
val = log(a) / log(i)
if abs(val - round(val)) < 1e-8:
return True
return False
def isAchilles(n):
return check_powerful(n) and not check_power(n)
print(isAchilles(108))
Achilles Numbers เริ่มต้น
72, 108, 200, 288, 392, 432, 500, 648, 675, 800, 864, 968, 972, 1125...
ผลลัพธ์
True