इस लेख में, हम नीचे दिए गए प्रॉब्लम स्टेटमेंट के समाधान के बारे में सीखेंगे:
प्रॉब्लम स्टेटमेंट
एक संख्या n दिए जाने पर, हमें इसके सभी यूनिक प्राइम फैक्टर्स का गुणनफल ढूंढना है और इसे वापस करना है।
उदाहरण के लिए
Input: num = 11 Output: Product is 11
व्याख्या
यहां, इनपुट संख्या 11 है जिसमें केवल 1 प्राइम फैक्टर है और वह 11 है। और इसलिए उनका गुणनफल 11 है।
दृष्टिकोण 1
i = 2 से n+1 तक फॉर लूप का उपयोग करके जांचें कि क्या i, n का फैक्टर है और फिर जांचें कि क्या i स्वयं प्राइम नंबर है, यदि हां तो प्रोडक्ट को प्रोडक्ट वेरिएबल में स्टोर करें और इस प्रक्रिया को तब तक जारी रखें जब तक i, 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
# मेन
n = 18
print(productPrimeFactors(n))
आउटपुट
120
सभी वेरिएबल्स का स्कोप नीचे दी गई छवि में दिखाया गया है:

दृष्टिकोण 2
1) जब तक n, 2 से विभाज्य है (इवन), 2 प्रिंट करें और n को 2 से विभाजित करें।
2) चरण 1 के बाद, n अवश्य ऑड हो जाना चाहिए। अब i = 3 से n के वर्गमूल तक फॉर लूप शुरू करें। जब तक i, n को विभाजित करता है, i प्रिंट करें और n को i से विभाजित करें। i के n को विभाजित करने में विफल होने के बाद, i को 2 से बढ़ाएं और प्रक्रिया जारी रखें।
3) यदि n एक प्राइम नंबर है और 2 से बड़ा है, तो n ऊपर दिए गए दो चरणों से 1 नहीं बनेगा। इसलिए यदि n 2 से बड़ा है तो n प्रिंट करें।
उदाहरण
import math
def productPrimeFactors(n):
product = 1
# प्राइम फैक्टर 2
if (n % 2 == 0):
product *= 2
while (n % 2 == 0):
n = n / 2
# n अवश्य ऑड होना चाहिए
for i in range(3, int(math.sqrt(n)), 2):
# जब तक i, n को विभाजित करता है, i प्रिंट करें और n को विभाजित करें
if (n % i == 0):
product = product * i
while (n % i == 0):
n = n / i
# n 2 से बड़ा प्राइम नंबर है
if (n > 2):
product = product * n
return product
# मेन
n = 8
print(int(productPrimeFactors(n)))
आउटपुट
2
वेरिएबल्स के स्कोप नीचे दी गई छवि में उल्लिखित हैं:

निष्कर्ष
इस लेख में, हमने ब्रूट फोर्स दृष्टिकोण और एक कुशल दृष्टिकोण का उपयोग करके दी गई संख्या के यूनिक प्राइम फैक्टर्स के गुणनफल के बारे में सीखा।