Project Euler Problem #21

ให้ d(n) เป็นผลรวมของ ตัวหารแท้ (Proper Divisor) ของ n (ตัวเลขที่น้อยกว่า n ซึ่งหาร n ได้ลงตัว)

ถ้า d(a) = b และ d(b) = a, โดยที่ a ≠ b, ดังนั้น a และ b เป็นจำนวนคู่มิตร (Amicable Pair) และทั้ง a และ b จะถูกเรียกว่า จำนวนเชิงมิตร (Amicable Number)

ตัวอย่างเช่น ตัวหารแท้ ของ 220 คือ 1, 2, 4, 5, 10, 11, 20, 22, 44, 55 และ 110 ดังนั้น d(220) = 284 ตัวหารที่เหมาะสมของ 284 คือ 1, 2, 4, 71 และ 142 ดังนั้น d(284) = 220

จงหาผลรวมของจำนวนเชิงมิตรทั้งหมด ที่ต่ำกว่า 10,000

(โจทย์นี้แปลมาจาก projecteuler.net สามารถเผยแพร่ภายใต้ลิขสิทธิ์ CC BY-NC-SA 2.0 UK )


Rain’s answer for #21

@Rain
ชัดเจน: 3/3 สร้างสรรค์: 1/3 กระชับ 2/3 ความเร็ว 2/3
Comment: โค้ดชัดเจนครับ ตรงไปตรงมา

@IMPREM
ชัดเจน: 2/3 สร้างสรรค์: 1/3 กระชับ 2/3 ความเร็ว 1/3
Comment: ผมคิดว่าจุดจบน่าจะมีปัญหาครับ ถึงต้องหารสองตอนจบเพราะมันซ้ำกัน ทำให้ช้าลงครับ

@STGSafe
ชัดเจน: 2/3 สร้างสรรค์: 1/3 กระชับ 2/3 ความเร็ว 0/3
Comment: ช้ามากๆเลยครับ น่าจะเป็นเพราะใช้ for loop ซ้อน for loop อีกที