तो मैं किसी भी संख्या की जीसीडी प्राप्त करने के लिए पायथन में एक प्रोग्राम लिख रहा हूं।एकाधिक संख्याओं के साथ यूक्लिडियन एल्गोरिदम (जीसीडी)?
def GCD(numbers):
if numbers[-1] == 0:
return numbers[0]
# i'm stuck here, this is wrong
for i in range(len(numbers)-1):
print GCD([numbers[i+1], numbers[i] % numbers[i+1]])
print GCD(30, 40, 36)
फ़ंक्शन संख्याओं की एक सूची लेता है। इसे प्रिंट करना चाहिए 2. हालांकि, मुझे समझ में नहीं आता कि एल्गोरिदम का पुनरावृत्ति कैसे उपयोग किया जाए ताकि यह एकाधिक संख्याओं को संभाल सके। क्या कोई समझा सकता है?
अद्यतन, अभी भी काम नहीं:
def GCD(numbers):
if numbers[-1] == 0:
return numbers[0]
gcd = 0
for i in range(len(numbers)):
gcd = GCD([numbers[i+1], numbers[i] % numbers[i+1]])
gcdtemp = GCD([gcd, numbers[i+2]])
gcd = gcdtemp
return gcd
ठीक है,
def GCD(a, b):
if b == 0:
return a
else:
return GCD(b, a % b)
और उसके बाद की तरह
reduce(GCD, (30, 40, 36))
आपकी पहली समस्या यह है कि मुझे नोटिस है कि आपको सूची को क्रमबद्ध करने की आवश्यकता होगी ताकि सबसे छोटा तत्व अंतिम –
सुनिश्चित न हो कि डुप्लिकेट या सिर्फ संबंधित: [पायथन में सबसे बड़ा आम संप्रदाय कंप्यूटिंग] (http: // stackoverflow। कॉम/क्यू/3640 9 55/241039) –
बस अगर आप इसे पुन: स्थापित करने के बजाय पुनरावृत्ति के साथ कर सकते हैं तो यह संभवतः तेज़ और बड़े मूल्यों को संभालने में सक्षम होगा ... अपरिभाषित गहराई का पुनरावृत्ति पाइथन –