2012-06-19 6 views
8

मैं कई मूल्यों का सबसे बड़ा सामान्य विभाजक प्राप्त करने का सबसे आसान समाधान ढूंढ रहा हूं। कुछ ऐसा:एकाधिक (2 से अधिक) संख्याओं का सबसे बड़ा आम विभाजक

x=gcd_array(30,40,35) % Should return 5 
x=gcd_array(30,40) % Should return 10 

आप इसे कैसे हल करेंगे?

बहुत धन्यवाद!

+0

संभव डुप्लिकेट http://stackoverflow.com/questions/1231733/euclidian-greatest-common-divisor-for-more- फिर दो-संख्या) – starblue

उत्तर

1
`% GCD OF list of Nos using Eucledian Alogorithm 
    function GCD= GCD(n); 
    x=1; 
    p=n; 
    while(size(n,2))>=2 
    p= n(:,size(n,2)-1:size(n,2)); 
    n=n(1,1:size(n,2)-2); 
    x=1; 
    while(x~=0) 
    x= max(p)-min(p); 
    p = [x,min(p)]; 
    end  
    n=[n,max(p)]; 
    p= []; 
    end 
    ' 
[और उसके बाद दो नंबर के लिए Euclidian सबसे बड़ा आम भाजक] (की
+0

आपके समाधान की व्याख्या करने के लिए देखभाल? – everton

+1

फंक्शन जीसीडी संख्या के रूप में संख्याओं की सूची सूची लेता है, अब जीसीडी (ए 1, ए 2, ए 3) = जीसीडी (ए 1, जीसीडी (ए 2, ए 3) का उपयोग कर विभिन्न मैट्रिक्स पी में पिछले दो नंबरों को स्टोर करें जीसीडी की गणना करने के लिए पी, ए 1 और ए 2 = ए 1-ए 2 (ए 1-ए 2) -ए 2 के एल्गोरिदम जीसीडी का उपयोग करें और जब तक आप 0 या 1 प्राप्त नहीं करते हैं तब तक जीसीडी वैल्यू को फिर से स्टोर करें ताकि अब आपके पास n = (A3, A2, A1 ............ एक (n-2), gcd (एक-1, एक)) – user11948