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。
我已经尝试了上述问题,但它是给我意想不到的错误.
2条答案
按热度按时间vbkedwbf1#
如果我没理解错的话,你的函数“gcd”看起来有问题:递归循环将永远不会结束
vxf3dgd42#
如果您将某个数字除以0,则会抛出一个错误,称为:java.语言.算术异常
解决方案
1.在catch块中,您可以向用户显示消息(“Number cannot be divided by 0”)