2012-06-19 2 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- then-two-numbers) – 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 
    ' 
[2 개보다 많은 숫자 유클리드 최대 공약수 (
+0

귀하의 솔루션을 설명해 주시겠습니까? – everton

+1

함수 GCD는 인수로 숫자 목록 목록을 취합니다. 이제 gcd (a1, a2, a3) = gcd (a1, gcd (a2, a3))를 사용합니다. 다른 행렬에 마지막 두 숫자를 저장합니다. P GCD 알고리즘을 사용합니다. gcd of a1 & a2 = a1-a2 (a1-a2) -a2 등이 0 또는 1이 될 때까지 GCD 값을 다시 저장하여 n = (a1, a2, a3 ... a (n-2), gcd (an-1, an)) – user11948

관련 문제