如何求两个数的最大公约数,网上已经有很多办法,作为自己的笔记记一下比较常用和好用的几种。
大神的更详细链接在此:
https://blog.csdn.net/Holmofy/article/details/76401074
1.辗转相除法
先上定义:什么是辗转相除法。
给定两个整数a和b,利用辗转相除法求a和b的最大公约数的流程:
(1)假定a>b,如果a<b,则交换a和b的值
if(a<b)
{
a = a + b;
b = a - b;
a = a - b;
}
(2)假定a/b = q......r;r为余数
如果a除以b的余数不为0,那么令a = b,b = r,重复执行a%b,直到余数r为0.
(3)返回此时的b,b就是最大公约数。
代码:
int gcd2(int a,int b)
{ int c;
if(a<b)
{ a=a+b;
b=a-b;
a