计算一组数字的最大公约数和最小公倍数的最简单方法是什么?什么数学函数可以用来找到这些信息?
它没有内置函数。你可以用欧几里得算法找到两个数字的GCD。
对于一组数字
GCD(a_1,a_2,a_3,...,a_n) = GCD( GCD(a_1, a_2), a_3, a_4,..., a_n )
递归地应用它。
LCM也一样:
LCM(a,b) = a * b / GCD(a,b)
LCM(a_1,a_2,a_3,...,a_n) = LCM( LCM(a_1, a_2), a_3, a_4,..., a_n )
GCD有一个欧几里德算法,
public int GCF(int a, int b) {
if (b == 0) return a;
else return (GCF (b, a % b));
}
顺便说一下,a
和b
应该大于或等于0
,而LCM=|ab |/GCF(a,b)
我用欧几里德的算法找到两个数的最大公约数;它可以迭代以获得更大一组数字的GCD。
private static long gcd(long a, long b)
{
while (b > 0)
{
long temp = b;
b = a % b; // % is remainder
a = temp;
}
return a;
}
private static long gcd(long[] input)
{
long result = input[0];
for(int i = 1; i < input.length; i++) result = gcd(result, input[i]);
return result;
}
最小公倍数有点棘手,但最好的方法可能是通过GCD进行缩减,这可以类似地进行迭代:
private static long lcm(long a, long b)
{
return a * (b / gcd(a, b));
}
private static long lcm(long[] input)
{
long result = input[0];
for(int i = 1; i < input.length; i++) result = lcm(result, input[i]);
return result;
}
本文向大家介绍查找两个数字的GCD,包括了查找两个数字的GCD的使用技巧和注意事项,需要的朋友参考一下 在数学中,最大公约数(GCD)是最大可能的整数,该整数将两个整数相除。条件是数字必须为非零。 我们将遵循欧几里得算法来找到两个数字的GCD。 输入输出 算法 输入:两个数字a和b。 输出: a和b的GCD。 示例 输出结果
问题内容: 给定一个数组,如何找到其元素的总和?(在这种情况下,总和为。) 我认为可能有用,但是我不确定如何实现它。 问题答案: 推荐(减少默认值) Array.prototype.reduce可用于遍历数组,将当前元素值添加到先前元素值的总和中。 没有默认值 您收到TypeError 在ES6的箭头功能之前 非数字输入 如果非数字是可能的输入,您可能要处理呢? 不建议危险的评估使用 我们可以使用
我需要使用用户在 Java 扫描程序中输入的内容的输入,然后确定该特定输入是否被接受为检查清单数组中是否有足够的输入的一部分。此外,int 清单数组的特定值必须与字符串项数组匹配。例如,对于商品“螺丝刀”,数量为 500。 这是一个用于家庭作业的程序,我被困在一个步骤中,我必须找出用户想要购买的商品数量。如果输入量大于int[]库存量,那么我必须让用户知道并退出程序。但是如果我有足够的库存,那么我
我已经尝试了下面的代码。请帮我得到输出。我想要我能理解的简单代码。 假设这个数字是40:
问题内容: 基本上,我只需要获取一个5位数的数字,并用空格分隔即可。5位数字可以在varchar中的任何位置。 示例:我在SQL 2008表中有一个varchar列,其中包含这些各种数据 5位数字可以在任何空格之间分隔的地方,什么是最好的提取方法呢? 谢谢 这样的行应返回空白 在没有运气的情况下尝试了以下内容 我想我需要结合使用对varchar中的空间数量进行计数。和以上。但我不确定该怎么做 问题
我有一个数组,我需要三个数中最大的一个数和各自的索引值。我有一个这样的数组: 如何找到最大的数字及其索引值?