मान लीजिए हमारे पास 1 से बड़ी एक संख्या n है, हमें उसके सभी अभाज्य गुणनखंड ढूंढने हैं और उन्हें क्रमबद्ध क्रम में वापस करना है। हम एक संख्या को अभाज्य संख्याओं के गुणनफल के रूप में लिख सकते हैं, वे उसके अभाज्य गुणनखंड हैं। और वही अभाज्य गुणनखंड एक से अधिक बार आ सकता है।
उदाहरण के लिए, यदि इनपुट 42 है, तो आउटपुट [2, 3, 7] होगा।
इसे हल करने के लिए हम निम्न चरणों का पालन करेंगे:
- res := एक नई सूची
- जब तक n % 2 == 0, करें:
- res के अंत में 2 डालें
- n := n/2 का भागफल
- i को 3 से n के वर्गमूल तक, चरण 2 में बढ़ाते हुए करें:
- जब तक n % i == 0, करें:
- res के अंत में i डालें
- n := n/i का भागफल
- जब तक n % i == 0, करें:
- यदि n > 2, तो res के अंत में n डालें
- res वापस करें
उदाहरण
class Solution:
def solve(self, n):
res = []
while n % 2 == 0:
res.append(2)
n //= 2
for i in range(3, int(n**0.5) + 1, 2):
while n % i == 0:
res.append(i)
n //= i
if n > 2:
res.append(n)
return res
ob = Solution()
print(ob.solve(42))
इनपुट
42
आउटपुट
[2, 3, 7]