how to calculate GCD in matlab
13 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
DEDEN PRADEKA
il 10 Set 2016
Commentato: Abdulrehman Khan
il 24 Lug 2017
I have variable : A = [1 1 1 1 2 1 3 2]; how calculate greatest common divisor in variable A ?
0 Commenti
Risposta accettata
John D'Errico
il 10 Set 2016
Modificato: John D'Errico
il 10 Set 2016
Compute the GCD of the first pair of elements. Then just loop. The gcd of more then one number is simply
gcd(gcd(a,b),c)
etc. So the solution is trivial.
d = A(1);
for n = 2:numel(A)
d = gcd(d,A(n));
end
If you cannot use GCD in your code, then you need to do some reading. There are several simple schemes to compute the GCD. The Euclidean algorithm is the simplest. It turns out this is trivial to write in MATLAB.
Start out with some vector A.
A = [12 30 144 20];
Take the smallest element of A, and compute the modulus. Thus, effectively the Euclidean algorithm, applied to a vector of numbers...
d = min(A);
while true
r = mod(A,d);
if ~any(r)
break
end
% find the smallest non-zero element of r
r(r == 0) = inf;
d = min(r);
end
When the loop terminates, which it must do as long as all of the elements of A are positive integers, then d is the GCD of the group.
1 Commento
Abdulrehman Khan
il 24 Lug 2017
can you explain what does these lines do
r = mod(A,d);
if ~any(r)
Più risposte (1)
Vedere anche
Categorie
Scopri di più su Logical in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!