इस लेख में, हम नीचे दिए गए समस्या कथन के समाधान के बारे में जानेंगे -
समस्या कथन
एक संख्या n को देखते हुए, हमें इसके सभी उपलब्ध अद्वितीय अभाज्य कारकों का गुणनफल खोजना होगा और उसे वापस करना होगा।
उदाहरण के लिए
Input: num = 11 Output: Product is 11
स्पष्टीकरण
यहां, इनपुट संख्या 11 है जिसमें केवल 1 प्रमुख कारक है और यह 11 है। और इसलिए उनका उत्पाद 11 है।
पहुंच 1
i =2 से n+1 तक के लिए लूप का उपयोग करके जांचें कि क्या मैं n का एक कारक है और फिर जांचें कि क्या मैं ही अभाज्य संख्या हूं, यदि हां, तो उत्पाद को उत्पाद चर में संग्रहीत करें और इस प्रक्रिया को तब तक जारी रखें जब तक कि मैं =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 # main n = 18 print (productPrimeFactors(n))
आउटपुट
120
सभी चरों का दायरा नीचे दी गई छवि में दिखाया गया है -
दृष्टिकोण 2
1) जबकि n 2 (सम) से विभाज्य है, प्रिंट 2 और n को 2 से भाग दें।
2) चरण 1 के बाद, n विषम हो जाना चाहिए। अब लूप के लिए i =3 से n के वर्गमूल तक प्रारंभ करें। जबकि मैं n को विभाजित करता हूं, i प्रिंट करता हूं और n को i से विभाजित करता हूं। n को विभाजित करने में विफल रहने के बाद, i को 2 से बढ़ाएँ और प्रक्रिया जारी रखें।
3) यदि n एक अभाज्य संख्या है और 2 से बड़ी है, तो n दो चरणों से ऊपर 1 नहीं बनेगा। इसलिए 2 से अधिक होने पर n प्रिंट करें।
उदाहरण
import math def productPrimeFactors(n): product = 1 # prime factor 2 if (n % 2 == 0): product *= 2 while (n%2 == 0): n = n/2 # n must be odd for i in range (3, int(math.sqrt(n)), 2): # While i divides n, print i and # divide n if (n % i == 0): product = product * i while (n%i == 0): n = n/i # n is a prime number greater than 2 if (n > 2): product = product * n return product # main() n = 8 print (int(productPrimeFactors(n)))
आउटपुट
2
नीचे दी गई छवि में चरों के दायरे का उल्लेख किया गया है -
निष्कर्ष
इस लेख में, हमने ब्रूट फ़ोर्स अप्रोच और कुशल अप्रोच के साथ दी गई संख्या के यूनीक प्राइम फ़ैक्टर्स के गुणनफल के बारे में जाना