इस लेख में, हम नीचे दिए गए समस्या कथन के समाधान के बारे में जानेंगे -
समस्या कथन - एक संख्या n दी गई है, हमें इसके सभी अद्वितीय अभाज्य गुणनखंडों का गुणनफल ज्ञात करना होगा और इसे वापस करना होगा।
उदाहरण के लिए,
इनपुट: num = 11
आउटपुट: 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))
आउटपुट
6
सभी वेरिएबल्स का स्कोप नीचे दी गई छवि में दिखाया गया है -

दृष्टिकोण 2
जब तक n, 2 से विभाज्य है (सम), 2 प्रिंट करें और n को 2 से विभाजित करें।
चरण 1 के बाद, n विषम हो जाना चाहिए। अब i = 3 से n के वर्गमूल तक फॉर लूप शुरू करें। जब तक i, n को विभाजित करता है, i प्रिंट करें और n को i से विभाजित करें। i के n को विभाजित करने में विफल होने के बाद, i को 2 से बढ़ाएं और प्रक्रिया जारी रखें।
यदि n एक अभाज्य संख्या है और 2 से बड़ा है, तो n उपरोक्त दो चरणों से 1 नहीं बनेगा। इसलिए n प्रिंट करें यदि यह 2 से बड़ा है।
उदाहरण
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
वेरिएबल्स के स्कोप नीचे दी गई छवि में बताए गए हैं -

निष्कर्ष
इस लेख में, हमने ब्रूट फोर्स दृष्टिकोण और एक कुशल दृष्टिकोण के साथ दी गई संख्या के अद्वितीय अभाज्य गुणनखंडों के गुणनफल के बारे में सीखा।