请告诉我为什么它错了(LCM & GCD)

吴芯緰

问题:给定一个由 n 个数字组成的数组,找出它的 LCM。

由于 LCM(a,b) = a*b / GCD(a,b),这是我的原始代码:

class GFG {

      // the simple 2 integers recursive to find their GCD.

    static int getGcd(int a, int b){
        while(a != b){
            if(a >b){
                a = a-b;
            }else{
                b= b-a;
            }
        }
        return a;
    }

    // find GCD in an array that has more than two integers.

    static int Gcd(int[] newArray){

     int gcd = newArray[0];
       for(int i=1; i<newArray.length; i++){
        gcd = getGcd(gcd,newArray[i]);
     }

        return gcd;
    }

    static int Lcm(int[] newArray){
        int multi =1;
        for(int i=0; i< newArray.length; i++){
            multi = multi* newArray[i];
        }
        return (multi/gcd);
    }

    public static void main (String[] args) {
        int[] newArray = { 2, 7, 3, 9, 4 };
        System.out.println(Gcd(newArray));
        System.out.println(Lcm(newArray));
    }
}

但是当我运行这段代码时,它显示了一些错误:

prog.java:33: error: cannot find symbol
        return (multi/gcd);
                      ^
  symbol:   variable gcd

我不知道如何修复它。请帮我更正我的代码...谢谢!!!

王一航

Lcm() 函数中没有定义 gcd。最后定义的 gcd 是在 Gcd() 函数中,而这不是全局变量 Lcm() 不能使用它。

也许你是这个意思?

static int Lcm(int[] newArray){
    int multi =newArray[0];
    int gcd = 0;
    for(int i=1; i< newArray.length; i++){
        gcd = getGcd(multi, newArray[i]);
        if(gcd == 1) {
            multi = multi * newArray[i];
        }else {
            multi = multi * newArray[i] / gcd;
        }
    }
    return multi;
}

使用它可以产生结果。你可以考虑一下这个。我们从2开始,multi是2,下一个值是7。2和7的gcd是1,所以lcd就是14。然后我们用14比较3,gcd也是1,所以multi他们就是42.然后用42比较9,我们发现9有42的gcd是3,所以我们用42/3是14,然后用14和9,gcd是1,给multi 14x9是126。然后用126和4 ,gcd是2,所以multi是126/2=63,63和4gcd是1,所以最后multi是63x4是252。

看任意两个数,不管是[3,7],[50,5],[20,10],[100,10000],[52,57],[3,81], lcm 总是 a*b/gcd。在这种情况下,我们可以得到答案。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

std::__gcd 和 std::gcd 有什么区别?

在Swift中,为什么GCD无法解析?

请谁能告诉我为什么输出是这样的?(蟒蛇)

如何在一组数字上找到GCD,LCM

Bootstrap 的网格布局没有并排放置图像和文本。请告诉我我做错了什么?

为什么我应该选择GCD而不是NSOperation和用于高级应用程序的块?

GCD为什么我在读取共享资源时使用dispatch_sync

为什么使用NSOperation,GCD或performSelectorInBackground我无法拍摄UIView的快照?

快速关闭中的gcd中的弱自我

GCD主队列和主线程有什么区别?

GCD中的.userInitiated和.userInteractive有什么区别?

与中央分派中心(GCD)相比,NSOperations的优势是什么?

GCD中的线程和队列之间有什么关系?

为什么我们使用此代码请谁能告诉我

请告诉我为什么我的输出中有一个“none”

C ++,Shared_ptr,请告诉我为什么我的代码给出错误?

大量的GCD

GCD指数

多个GCD

我对 Python assert 语句的使用有不同的看法,我想请您告诉我为什么我错了

请告诉我为什么这个对象迭代器只允许记录一次

请告诉我为什么这不起作用!(基本jQuery)

请告诉我,为什么滚动视图在android studio中不起作用?

请告诉我为什么 c 代码的行为方式如此详细?

请告诉我为什么此代码不起作用

嗨,我对此有疑问,请告诉我我哪里出错了

两个数字的GCD / LCM可以从输入数字本身进行评估

从 1 到 20 查找 lcm,给出错误“at Main.gcd(Main.java:21)”

帶有多個參數的 gcd 和 lcm Scheme,DRracket