2012-06-19 64 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 
    ' 
[了兩個多號碼歐幾里得最大公約數(的
+0

小心解釋你的解決方案? – everton

+1

功能GCD採用數字列表列表作爲其參數 現在,使用GCD(A1,A2,A3)= GCD(A1,GCD(A2,A3)。 存放在不同的矩陣P 最後兩個數字來計算的GCD P, 使用算法 gcd的a1&a2 = a1-a2 (a1-a2)-a2等等直到您得到0或1 再次在n中存儲GCD值,以便現在您有n =( A1,A2,A3 ............ A(N-2),GCD(AN-1,AN)) – user11948