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

โปรแกรม Python หาผลคูณของเฉพาะตัวประกอบ (Unique Prime Factors) ของเลข

โจทย์: กำหนดเลข n หาผลคูณของเฉพาะตัวประกอบที่ไม่ซ้ำกันทั้งหมด

ตัวอย่าง: n=11 → ผลคูณ = 11 (เพราะ 11 เป็นเฉพาะตัวประกอบเพียงตัวเดียว)

วิธี 1: Brute Force (for loop + prime check)

def productPrimeFactors(n):
    product = 1
    for i in range(2, n+1):
        if n % i == 0:
            isPrime = 1
            for j in range(2, int(i/2 + 1)):
                if i % j == 0:
                    isPrime = 0
                    break
            if isPrime:
                product *= i
    return product

print(productPrimeFactors(18))

ผลลัพธ์

120

โปรแกรม Python หาผลคูณของเฉพาะตัวประกอบ (Unique Prime Factors) ของเลข

วิธี 2: Efficient (หาร 2 แล้ว หารเลขคี่จน sqrt(n))

import math

def productPrimeFactors(n):
    product = 1
    # หาร 2
    if n % 2 == 0:
        product *= 2
        while n % 2 == 0:
            n //= 2
    # n เป็นคี่ ตอนนี้
    for i in range(3, int(math.sqrt(n)) + 1, 2):
        if n % i == 0:
            product *= i
            while n % i == 0:
                n //= i
    # ถ้า n > 2 แสดงว่า n เป็นเฉพาะ
    if n > 2:
        product *= n
    return product

print(int(productPrimeFactors(8)))

ผลลัพธ์

2

โปรแกรม Python หาผลคูณของเฉพาะตัวประกอบ (Unique Prime Factors) ของเลข

สรุป

เรียนรู้ 2 วิธีหาผลคูณเฉพาะตัวประกอบที่ไม่ซ้ำ: Brute force และ Efficient method (หาร 2 แล้ว หารเลขคี่ถึง sqrt)