Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 计算GCD_Java_Methods_Greatest Common Divisor - Fatal编程技术网

Java 计算GCD

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

我需要帮助获得两个输入号码的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(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;                
    }
}