%greatest common divisor 最大公约数
clc;
clear;
%1.辗转相除法(欧几里得算法):两个正整数a和b(a>b),它们的最大公约数等于a除以b的余数c和b之间的最大公约数。
a=250;
b=100;
c=1;
while(c~=0)
c=mod(a,b);
if(c==0)
b
else
a=b;
b=c;
end
end
%2.更相减损术(出自九章算术):两个正整数a和b(a>b),它们的最大公约数等于a-b的差值c和较小数b的最大公约数。
% 避免了大整数取模的性能问题
a=250;
b=100;
c=1;
while(c~=0)
if(a>b)
c=a-b;
if(c==0)
a
end
a=b;
b=c;
else
c=b-a;
if(c==0)
a
end
b=a;
a=c;
end
end
%3. 欧几里得算法(辗转相除法)+更相减损术
function c= Gcd(a,b)
if(a>b)
if(mod(a,2)==0&&mod(b,2)==0)
c=2*Gcd(a/2,b/2);
elseif(mod(a,2)~=0&&mod(b,2)==0)
c=Gcd(a,b/2);
三种方法求解最大公约数
最新推荐文章于 2022-05-21 21:28:45 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)