इस लेख में, हम नीचे दिए गए समस्या कथन के समाधान के बारे में जानेंगे -
समस्या कथन - एक संख्या n को देखते हुए, हमें इसके सभी उपलब्ध अद्वितीय अभाज्य कारकों का गुणनफल खोजना होगा और उसे वापस करना होगा।
उदाहरण के लिए,
Input: num = 11 Output: Product is 11 Explanation: Here, the input number is 11 having only 1 prime factor and it is 11. And hence their product is 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))
आउटपुट
6
सभी चरों का दायरा नीचे दी गई छवि में दिखाया गया है -
दृष्टिकोण 2
-
जबकि n 2 (सम) से विभाज्य है, 2 प्रिंट करें और n को 2 से भाग दें।
-
चरण 1 के बाद, n विषम हो जाना चाहिए। अब लूप के लिए i =3 से n के वर्गमूल तक प्रारंभ करें। जबकि मैं n को विभाजित करता हूं, I प्रिंट करता हूं और n को i से विभाजित करता हूं। जब मैं n को विभाजित करने में विफल हो जाता हूं, तो I को 2 से बढ़ा देता हूं और प्रक्रिया जारी रखता हूं।
-
यदि 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
नीचे दी गई छवि में चरों के दायरे का उल्लेख किया गया है -
निष्कर्ष
इस लेख में, हमने ब्रूट फ़ोर्स अप्रोच और कुशल अप्रोच के साथ दी गई संख्या के यूनीक प्राइम फ़ैक्टर्स के गुणनफल के बारे में जाना।