我在下面的java代码中遇到了一个错误,有人能帮我吗

zaqlnxep  于 2022-12-21  发布在  Java
关注(0)|答案(2)|浏览(122)
class Solution {
  
    long  maxGcd(int  N) {
        long  a = (N * (N - 1))/ gcd(N,N-1);
        long  b = ((N-2)*(N-3))/ gcd(N-2,N-3);
        long  c = (a*b)/ gcd(a,b);
        long  num = N*(N-1);
        int count = 0;
        for (int i = N - 2; i >= 1; i--) {
            if (gcd(num, i) == 1) {
                num *= i;
                count++;
            }
            if (count == 2) break;
        }
        return  Math.max(c, num);
    }

    long  gcd(long x, long y)
    {
        if(y==0)
        return x;
        return gcd(y,x*y);
    }
}

错误:
在线程"main"中出现异常错误。/减零
我想我得到这个错误是因为,在某个点,如果b = 0,那么c将是未定义的。

if(b!=0){
    long c =(a*b)/gcd(a,b)

但运行后,会显示错误消息

prog.java:43: error: cannot find symbol
        return  Math.max(c, num);

有人能帮我解决这个错误吗?
给定一个整数N。求出可以从四个小于或等于N的数中获得的最大LCM(最小公倍数)。
注:可使用重复编号。
例一:
输入:
N = 4
产量:12
说明:
这四个数可以是[4,4,3,2]或[4,4,4,3]等。可以看出,12是可以从小于或等于4的数获得的四个数的最大LCM。
我已经尝试了上述问题,但它是给我意想不到的错误.

vbkedwbf

vbkedwbf1#

如果我没理解错的话,你的函数“gcd”看起来有问题:递归循环将永远不会结束

vxf3dgd4

vxf3dgd42#

如果您将某个数字除以0,则会抛出一个错误,称为:java.语言.算术异常
解决方案

  1. try、catch块
    1.在catch块中,您可以向用户显示消息(“Number cannot be divided by 0”)

相关问题