给出使用欧几里得算法105和24的最大公约数的过程中得到的一系列p和q的值。扩展算法中的代码得到一个程序Euclid,从命令行接受两个参数,计算它们的最大公约数并打印出每次调用递归方法时的两个参数。使用你的程序计算1 111 111和1 234 567的最大公约数。
程序
/**
* 辗转相除
*/
public class Main {
public static int gcd(int p, int q){
System.out.println(p+","+q);
if (q == 0) return p;
int r = p % q;
return gcd(q,r);
}
public static void main(String[] args) {
int p = 12, q = 15;
if (p < q){
int tmp = p;
p = q;
q = tmp;
}
int result = gcd(p,q);
System.out.println(result);
System.out.println("==============");
p = 1111111; q = 1234567;
if (p < q){
int tmp = p;
p = q;
q = tmp;
}
result = gcd(p,q);
System.out.println(result);
}
}
结果
15,12
12,3
3,0
3
==============
1234567,1111111
1111111,123456
123456,7
7,4
4,3
3,1
1,0
1