在欧几里得算法计算gcd(x, y)
的示例中,x
始终大于y
。这个条件重要吗?如果x
小于y
会发生什么?为什么即使输入的x
值比y
小,这个程序仍然返回正确的结果?
import acm.program.*;
/*
GCD Algorithm - greatest common divisor. "Euclid Algorithm approach"
*/
public class EuclidsAlgorithm extends ConsoleProgram {
public void run(){
println("This program is calculating the gratest common divisor (GCD) of two numbers.");
int x = readInt("Enter 1st number: ");
int y = readInt("Enter 2nd number: ");
println("GCD(" + x + ", " + y + ") = " + gcd(x, y) );
}
private int gcd(int m, int k){
int r = m % k;
while (r != 0){
m = k;
k = r;
r = m % k;
}
return k;
}
}
x>y
和x<y
的输入进行调试。 - Andy Turnerstatic
:private static int gcd(...)
。 - Dmitry Bychenkolong
等类型,可能不想从原始类型迁移到泛型(想象一下,你必须将gcd
应用于一个包含百万个int对的数组)。 - Dmitry Bychenko