约数:如果整数a能被整数b整除,那么a叫做b的倍数,b叫做a的约数。
给定两个整数a,b,两个数的所有公共约数中的最大值即为最大公约数(Greatest Common Divisor,GCD)。
例:15与35的最大公约数是7
欧几里得算法:gcd(a,b)=gcd(b,a mod b) 注:mod就是取余
举例:gcd(15,35)=gcd(35,5)=gcd(5,0)=5
代码实现
先简单的递归写法
//递归
public int GCD(int a,int b)
{
int res = 0;
if (b == 0)
res = a;
else
res = GCD(b,a%b);
return res;
}
循环写法
//循环
public int GCD2(int a, int b)
{
int res = 0;
int tmp = 0;
while (b>0)
{
tmp = a % b;
a = b;
b = tmp;
}
res = a;
return res;
}