2012-06-19 4 views
8

Ich suche nach der einfachsten Lösung, um den größten gemeinsamen Teiler mehrerer Werte zu erhalten. Etwas wie:Größter gemeinsamer Teiler mehrerer (mehr als 2) Zahlen

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

Wie würden Sie das lösen?

Vielen Dank!

+0

möglich Duplikat [euklidischen größten gemeinsamen Teiler für mehr als zwei Zahlen] (http://stackoverflow.com/questions/1231733/euclidian-greatest-common-divisor-for-more- then-two-numbers) – starblue

Antwort

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

Möchten Sie Ihre Lösung erklären? – everton

+1

Funktion GCD nimmt Liste Liste von Zahlen als Argument Jetzt mit gcd (a1, a2, a3) = gcd (a1, gcd (a2, a3). Speichern Sie die letzten beiden Zahlen in anderen Matrix P Um den GCD zu berechnen von P, benutze den Algorithmus gcd von a1 & a2 = a1-a2 (a1-a2) -a2 und so weiter, bis du 0 oder 1 hast speicher den GCD-Wert wieder in n, so dass du nun n = (a1, a2, a3 ............ a (n-2), gcd (an-1, an)) – user11948

Verwandte Themen