Compute the GCD of the first pair of elements. Then just loop. The gcd of more then one number is simply
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.
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
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.
Best Answer