最大公约数的意思就是整数m和n有最大的公共约数,这篇文章写的是辗转除来求最大的公约数,其实想想也蛮简单的,首先是我们需要其实之前我们都可以不用思考,只需要思考最后一步,因为是公约数, 然后返回值肯定是n,这里m>n; 这里可能有的人会思考,为什么通过取余来得到m,n,其实仔细想想,我们通过取余去掉的都是r=m%n,n的倍数 ,如果n是m的公约数那么r=0是符合,否则就只能去n剩下的里面去找了。
package com.jk.gcddemo;
/**
* @author jk
* 这段代码写的是辗转除来求最大的公约数,其实想想也蛮简单的,首先是我们需要其实之前我们都可以不用思考,只需要思考最后一步,因为是公约数,
* 然后返回值肯定是n,这里m>n;
* 这里可能有的人会思考,为什么通过取余来得到m,n,其实仔细想想,我们通过取余去掉的都是r=m%n,n的倍数
* ,如果n是m的公约数那么r=0是符合,否则就只能去n剩下的里面去找了。
*
*/
public class test {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int res = gcd(8, 6);
System.out.println(res);
}
private static int gcd(int i, int j) {
int m, n, r;
// 使m>n
if (i > j) {
m = i;
n = j;
} else {
m = j;
n = i;
}
// 通过辗转除来求的最大公约数
r = m % n;
while (r != 0) {
m = n;
n = r;
r = m % n;
}
// 返回最大公约数
return n;
}
}