how to calculate GCD in matlab

조회 수: 23 (최근 30일)
DEDEN PRADEKA
DEDEN PRADEKA 2016년 9월 10일
댓글: Abdulrehman Khan 2017년 7월 24일
I have variable : A = [1 1 1 1 2 1 3 2]; how calculate greatest common divisor in variable A ?

채택된 답변

John D'Errico
John D'Errico 2016년 9월 10일
편집: John D'Errico 2016년 9월 10일
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
Abdulrehman Khan
Abdulrehman Khan 2017년 7월 24일
can you explain what does these lines do
r = mod(A,d);
if ~any(r)

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

George
George 2016년 9월 10일
Look here to find the logic of how to calculate the greatest common factor. Then look at the docs for

카테고리

Help CenterFile Exchange에서 Mathematics에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by