1.1.24给出使用欧几里得算法105和24的最大公约数的过程中得到的一系列p和q的值。扩展算法中的代码得到一个程序Euclid,从命令行接受两个参数,计算它们的最大公约数并打印出每次调用递归方法时的两个参数。使用你的程序计算1 111 111和1 234 567的最大公约数。
public class Test
{
public static void main(String[] args)
{
StdOut.printf("gcd(105,24)=%d",gcd(105,24));
}
public static int gcd(int p,int q)
{
StdOut.printf("p=%d,q=%d
",p,q);
if (q==0) return p;
int r=p % q;
return gcd(q,r);
}
}
public class Euclid
{
public static void main(String[] args)
{
int p=Integer.parseInt(args[0]);
int q=Integer.parseInt(args[1]);
StdOut.printf("gcd("+Integer.toString(p)+","+Integer.toString(q)+")=%d",gcd(p,q));
}
public static int gcd(int p,int q)
{
StdOut.printf("p=%d,q=%d
",p,q);
if (q==0) return p;
int r=p % q;
return gcd(q,r);
}
}