2012-06-19 13 views
8

Estoy buscando la solución más fácil para obtener el mayor divisor común de valores múltiples. Algo como:El mayor divisor común de varios (más de 2) números

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

¿Cómo solucionaría esto?

¡Muchas gracias!

+0

posible duplicado de [máximo común divisor euclidiana por más de dos números] (http://stackoverflow.com/questions/1231733/euclidian-greatest-common-divisor-for-more- then-two-numbers) – starblue

Respuesta

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

¿Cuidar para explicar su solución? – everton

+1

Función GCD toma lista lista de números como su argumento Ahora, usando gcd (a1, a2, a3) = gcd (a1, gcd (a2, a3). Almacene los dos últimos números en diferente matriz P Para calcular el GCD de P, utilice el algoritmo gcd de a1 y a2 = a1-a2 (a1-a2) -a2 y así sucesivamente hasta que obtenga 0 o 1 almacene el valor de GCD nuevamente en n de modo que ahora tenga n = (a1, a2, a3 ............ a (n-2), gcd (an-1, an)) – user11948

Cuestiones relacionadas