10

我正在寻找最简单的解决方案来获得多个值的最大公约数。就像是:

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

你会如何解决这个问题?

非常感谢!

4

2 回答 2

22
gcd(a,b,c) = gcd(a,gcd(b,c))

这意味着您可以使用递归。

http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.73.3&rep=rep1&type=pdf&ei=90jgT9KPAtLS4QSNlOGdDQ&usg=AFQjCNGH_GewFofxWPfX2BDN6T5NF9PxAA

于 2012-06-19T09:48:47.143 回答
0
 `% 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
  '
于 2014-11-12T20:24:16.217 回答