โจทย์: หาผลรวมตัวประกอบที่เป็นเลขคู่ของตัวเลข n
ข้อสังเกต
- ถ้า n เป็นเลขคี่ → ไม่มีตัวประกอบคู่ → ผลรวม = 0
- ตัวประกอบคู่ต้องมีตัวประกอบ 2 อย่างน้อย 1 ตัว
- ใช้ Prime Factorization คำนวณผลรวมตัวประกอบทั้งหมด แล้วลบตัวประกอบคี่ออก
ตัวอย่างโค้ด Python
import math
def sum_of_even_factors(n):
if n % 2 != 0:
return 0 # เลขคี่ไม่มีตัวประกอบคู่
result = 1
temp_n = n
# Prime factorization
for i in range(2, int(math.sqrt(temp_n)) + 1):
if temp_n % i == 0:
count = 0
curr_sum = 1
curr_term = 1
while temp_n % i == 0:
count += 1
temp_n //= i
curr_term *= i
curr_sum += curr_term
# สำหรับเฉพาะตัวประกอบ 2: ตัด 2^0 = 1 ออก (เพื่อให้ได้แค่ตัวคู่)
if i == 2 and count >= 1:
curr_sum -= 1 # ลบ 1 ออก
result *= curr_sum
# ถ้าเหลือ prime factor ตัวสุดท้าย
if temp_n >= 2:
result *= (1 + temp_n)
return result
# ทดสอบ
print(sum_of_even_factors(22)) # Factors: 1,2,11,22 → Even: 2,22 → Sum: 24
ผลลัพธ์
24
หลักการ: ผลรวมตัวประกอบ = ∏(p⁰+p¹+...+pᵏ) สำหรับทุก prime factor p
สำหรับตัวประกอบคู่: ตัด p⁰=1 ออกจาก prime factor 2