ภาพรวม
Trojan Number = Strong Number (ทุกเฉพาะ因數ปรากฏ ≥ 2 ครั้ง) ที่ไม่ใช่ Perfect Power
Strong ≈ Powerful แต่เน้นที่ความถี่ของ prime factors
ตัวอย่าง
72 = 2³ × 3²
- Strong: 2 ปรากฏ 3 ครั้ง, 3 ปรากฏ 2 ครั้ง ✓
- Perfect Power: 72 ไม่ใช่ aᵇ ✓
- →
True
โค้ด Python
from math import sqrt
def check_perfect_pow(n):
if n == 1:
return True
for x in range(2, int(sqrt(n)) + 1):
y = 2
p = x ** y
while p <= n and p > 0:
if p == n:
return True
y += 1
p = x ** y
return False
def check_strong_num(n):
count = {i: 0 for i in range(n + 1)}
while n % 2 == 0:
n //= 2
count[2] += 1
for i in range(3, int(sqrt(n)) + 1, 2):
while n % i == 0:
n //= i
count[i] += 1
if n > 2:
count[n] += 1
for v in count.values():
if v == 1:
return False
return True
def isTrojan(n):
return not check_perfect_pow(n) and check_strong_num(n)
print(isTrojan(72))
Trojan Numbers เริ่มต้น
72, 108, 200, 288, 392, 432, 500, 648, 675, 800, 864, 968, 972, 1125...
(เหมือน Achilles Numbers ทุกตัว)
ผลลัพธ์
True