Java 计算GCD
我需要帮助获得两个输入号码的GCD。我不知道为什么它不会返回GCD。例如,GCD为55和125时为5。任何帮助都将不胜感激。它必须使用方法,而不是算法Java 计算GCD,java,methods,greatest-common-divisor,Java,Methods,Greatest Common Divisor,我需要帮助获得两个输入号码的GCD。我不知道为什么它不会返回GCD。例如,GCD为55和125时为5。任何帮助都将不胜感激。它必须使用方法,而不是算法 public static void main(String[] args)throws IOException { // TODO code application logic here //Intialize BufferReader minator); int gcd=GCD(n
public static void main(String[] args)throws IOException {
// TODO code application logic here
//Intialize BufferReader
minator);
int gcd=GCD(numerator,denominator);
System.out.println("GCD: "+gcd);
}
public static int GCD(int numerator,int denominator){
int remainder = numerator % denominator;
if (remainder == 0)
return denominator;
else
return GCD(denominator, remainder);
}
}
我尝试了你的代码,但失败了,出现了堆栈溢出异常。你应该确保把这些信息放在问题中 无论如何,这里有一个更传统的欧几里德GCD实现:
public static int GCD(int numerator, int denominator)
{
if (denominator == 0)
return numerator;
return GCD(denominator, numerator % denominator);
}
试一试
公共静态int GCD(int分子,int分母){
if(分子<分母){
int numswap=分母;
分母=分子;
分子=numswap;
}
整数余数=分子%分母;
如果(余数==0){
返回分母;
}
System.out.println(分子+分母);
返回GCD(分母,余数);
}
使用
if(分子<分母)
代替if(分子>分母)
获得两个数字a和b的gcd的最简单、最快和最短方法是此递归函数:
int gcd(int a, int b) {
if (b == 0)
return a;
else
return gcd (b, a % b);
}
最大公约数(GCD)可通过减法计算,假设数字为正整数:
public class GCD {
public static void main(String[] args) {
System.out.println(gcd(84,18)); //6
System.out.println(gcd(30,60)); // 30
System.out.println(gcd(125,55)); // 5
}
//only for positive integers
public static int gcd(int a, int b) {
while (a != b) {
if(a>b) {
a = a - b;
} else {
b = b - a;
}
}
return a;
}
}
那么,它的回报是什么呢?为什么不在GCD()的开头和结尾添加一些System.out.println(),这样就可以看到调用它时使用了哪些参数,以及它对这些参数的作用。使用“无算法”的要求是荒谬的。
int gcd(int a, int b) {
if (b == 0)
return a;
else
return gcd (b, a % b);
}
public class GCD {
public static void main(String[] args) {
System.out.println(gcd(84,18)); //6
System.out.println(gcd(30,60)); // 30
System.out.println(gcd(125,55)); // 5
}
//only for positive integers
public static int gcd(int a, int b) {
while (a != b) {
if(a>b) {
a = a - b;
} else {
b = b - a;
}
}
return a;
}
}