欧几里得算法(辗转相除法):
首先给定两个数a,b(a>b),则根据除法运算,a/b=q......r。q是商,r是余数。也可以表示为a=bq+r。下面给出一个定理:
若a=bq+r,则(a,b)=(b,r),即a,b的最大公约数等于b,r的最大公约数。
因此,可以用辗转相除法,求得a b的最大公约数。
如: a/b = q + r.
r = a % b.
ab的最大公约数等于br(b a%b)的公约数,br的公约数等于r b%r的公约数。因此每次变换a b的值,直到a能整除b。最终结果为b。
代码实现:
public int maxSub(int a, int b) {
int a;
int b;
int c;
while(a%b!= 0)
c = a% b;
a = b;
b = c;
}
return b;}