在一组数字上计算最大公约数和最小公倍数的最简单方法是什么?可以使用哪些数学函数来查找此信息?
从这个问题Java:得到最大公约数
在获取任何数据类型的 gcd 时,无论是int, long, Integer, Long,哪个答案在精度、速度、cpu 使用率等方面更好?
A:
private static int gcdThing(int a, int b) {
return BigInteger.valueOf(a).gcd(BigInteger.valueOf((b))).intValue();
}
Run Code Online (Sandbox Code Playgroud)
乙:
public int GCD(int a, int b) { return b==0 ? a : GCD(b, a%b); }
Run Code Online (Sandbox Code Playgroud) 我正在尝试将列表分成尽可能大的子列表。如果列表不能以这种方式划分,我将根据需要进行处理,但是我需要获得除N本身以外的最大数目,该数目将N均分。
我写了一个非常幼稚的解决方案,但是我觉得应该有一个公式或某种东西可以在恒定时间内做到这一点。我的列表不是很大,最大大小为1000。这可能不是关键路径,但是有更好的算法吗?
public static int largestDivisor(int n){
int divisor = 0;
for (int i = 1; i <= n/2; i++)
if (n % i == 0)
divisor = i;
return divisor;
}
Run Code Online (Sandbox Code Playgroud)