使用基础知识:GCF和LCD

时间:2017-09-28 07:50:03

标签: java

所以,是的,我要重新改述我上次所说的一切。我正在制作一个程序来查找两个数字的GCF和LCD。有很多方法可以找到GCF:

gcf = BigInteger.valueOf(x).gcd(BigInteger.valueOf(y)).intValue(‌​);

或欧几里德算法有两种类型,减法和余数法。

我们不允许使用任何数组或方法。我们必须使用控制结构和重复结构。

我做了减法方法,但我发现没有运气,所以我现在尝试了余数法。

int iA = 0, iB = 0, iG = 0, iL = 0, iR = 0;
if(iA != iB){
    if (iA > iB){
        iR = iA % iB;
        iG = iB / iR;
        iL = (iA*iB)/iG;
    }
    else{
        iR = iB % iA;
        iG = iA / iR;
        iL = (iA*iB)/iG;
    }
    System.out.println("The GCF is: " + iG);
    System.out.println("The LCD is: " + iL);
}
else{
    System.out.println("The GCF is: " + iA);
    System.out.println("The LCD is: " + iA);

现在,余数方法建议如果余数== 0,那么最后一个余数值是两个数字的GCF。我希望执行whiledo-while结构,但我想不出办法。我的代码现在以错误的方式输入。

e.g。

First Number: 120
Second Number: 50
The GCF is: 2

但是(120,50)的gcf应该是10.如果解决它就像:

iR = 120 % 50
iG = 50 / 20

无论如何,如果两个数字的乘积被GCF分割,可以获得LCD,所以如果我找不到GCF,那就太忙了。

任何帮助都会非常感激。提前谢谢!

1 个答案:

答案 0 :(得分:0)

当然,这是使用剩余方法的答案。

int iA = 0, iB = 0, iL = 0, iR;
System.out.print("Enter First Number: ");
iA = var.nextInt();
System.out.print("Enter Second Number: ");
iB = var.nextInt();
iL = (iA*iB);
if(iA != iB){
    if (iA > iB){
        do{
            iR = iA % iB;
            iA = iB;
            iB = iR;
        }while(iR != 0);
    iL /= iA;
    System.out.println("The GCF is: " + iA);
    }
    else if (iB > iA){
        do{
            iR = iB % iA;
            iB = iA;
            iA = iR;
        }while(iR != 0);
    iL /= iB;
    System.out.println("The GCF is: " + iB);
    }   
    System.out.println("The LCD is: " + iL);
}
else{
    System.out.println("The GCF is: " + iA);
    System.out.println("The LCD is: " + iA);
}