您的位置:首页 > 编程语言 > Java开发

java基础算法之通过辗转相除求 最大公约数

2016-05-03 19:45 435 查看
最大公约数的意思就是整数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;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: