দেওয়া একটি সংখ্যা n-এর সব ইউনিক প্রাইম ফ্যাক্টরগুলোর গুণফল বের করা।
পদ্ধতি ১: ব্রুট-ফোর্স (লুপ)
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 = product * i
return product
print(productPrimeFactors(18))
আউটপুট
120
পদ্ধতি ২: অপ্টিমাইজড (২ দিয়ে ভাগ, তারপর অড নম্বর)
import math
def productPrimeFactors(n):
product = 1
# প্রাইম ফ্যাক্টর ২
if n % 2 == 0:
product *= 2
while n % 2 == 0:
n = n / 2
# n এখন অড
for i in range(3, int(math.sqrt(n)) + 1, 2):
if n % i == 0:
product = product * i
while n % i == 0:
n = n / i
# n যদি ২ থেকে বড় প্রাইম হয়
if n > 2:
product = product * n
return product
print(int(productPrimeFactors(8)))
আউটপুট
2
উপসংহার
ব্রুট-ফোর্স এবং অপ্টিমাইজড (sqrt(n) পর্যন্ত চেক) দুটি পদ্ধতিতে ইউনিক প্রাইম ফ্যাক্টরগুলোর গুণফল বের করা।