मान लीजिए हमारे पास nums नामक तत्वों की एक लिस्ट है, हमें सबसे बड़ा पॉजिटिव मान ढूंढना है जो प्रत्येक इंटीजर को विभाजित करता है।
उदाहरण के लिए, यदि इनपुट है nums = [15, 81, 78], तो आउटपुट होगा 3, क्योंकि 3 सबसे बड़ा इंटीजर है जो 15, 81, और 78 को विभाजित करता है।
समाधान दृष्टिकोण
पहले दो संख्याओं का GCD निकालने के लिए math.gcd का उपयोग करें, फिर बाद की प्रत्येक संख्या के साथ पुनरावृति करें। यदि किसी भी बिंदु पर GCD 1 हो जाता है, तो जल्दी लौटें।
- यदि लिस्ट का आकार 1 है, तो उस तत्व को लौटाएं।
div = gcd(nums[0], nums[1])की गणना करें।- यदि आकार 2 है, तो
divलौटाएं। - शेष तत्वों के लिए,
div = gcd(div, nums[i+1])अपडेट करें। - यदि
div == 1, तो जल्दी 1 लौटाएं। - अंतिम
divलौटाएं।
पायथन कार्यान्वयन
from math import gcd
def solve(nums):
if len(nums) == 1:
return nums[0]
div = gcd(nums[0], nums[1])
if len(nums) == 2:
return div
for i in range(1, len(nums) - 1):
div = gcd(div, nums[i + 1])
if div == 1:
return div
return div
nums = [15, 81, 78]
print(solve(nums))
इनपुट
[15, 81, 78]
आउटपुट
3