Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

หาผลรวมตัวประกอบคู่ (Even Factors Sum) ใน Python

โจทย์: หาผลรวมตัวประกอบที่เป็นเลขคู่ของตัวเลข 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