โจทย์: กำหนดเลข n หาผลรวมของเฉพาะตัวประกอบคู่
ถ้า n เป็นคี่ → ไม่มีตัวประกอบคู่ คืน 0 ทันที มิฉะนั้น factorize และคำนวณผลรวม โดยตัด 2⁰ (คือ 1) ออก
โค้ดตัวอย่าง
import math
def sumofFactors(n):
if n % 2 != 0:
return 0
res = 1
for i in range(2, int(math.sqrt(n)) + 1):
count = 0
curr_sum = 1
curr_term = 1
while n % i == 0:
count += 1
n //= i
curr_term *= i
curr_sum += curr_term
if i == 2 and count == 1:
curr_sum = 0
res *= curr_sum
if n >= 2:
res *= (1 + n)
return res
print(sumofFactors(20))
ผลลัพธ์
36

สรุป
เรียนรู้วิธีหาผลรวมเฉพาะตัวประกอบคู่ของเลข: ถ้าเลขคี่คืน 0 ไปเลย มิฉะนั้น factorize และตัด 2⁰ ออกจากผลรวม