多个(两个以上)数的最大公约数

10

我正在寻找最简单的解决方案,以获取多个值的最大公约数。 类似于:

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

你会如何解决这个问题?

非常感谢!


可能是欧几里得算法求多个数的最大公约数的重复问题。 - starblue
2个回答


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
  '

1
能否解释一下你的解决方案? - everton
1
函数GCD以数字列表为参数。现在,使用gcd(a1,a2,a3)= gcd(a1,gcd(a2,a3))。将最后两个数字存储在不同的矩阵P中。为了计算P的GCD,使用算法gcd of a1 & a2= a1-a2,(a1-a2)-a2等等,直到得到0或1,再将GCD值再次存储在n中,这样现在你有n=(a1,a2,a3............a(n-2),gcd(an-1,an))。 - Shashank

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接