【发布时间】:2017-03-26 22:12:42
【问题描述】:
我正在尝试使用Apache Hadoop 实现 GCD 分布式算法,但无法确定可以使用 Hadoop 来完成此任务。
我有一个简单的函数用于查找两个数字的 GCD。 但我需要为数字数组实现 GCD。 所以基本上将输入数组减少为两个数字的小块,然后为每个块执行此函数并组合结果。
private static int gcd(int a, int b) {
int temp = 0;
while (b != 0) {
temp = b;
b = a % b;
a = temp;
}
return a;
}
我已经尝试过,但无法弄清楚如何使用 Apache Hadoop 来实现这一点。有人可以帮忙完成这项任务吗?或者提供类似算法的实现,以便更好地了解它的工作原理。
输入是一个包含 N 个数字的数组,例如
20,520,320,5,60,30
输出应该是
5
【问题讨论】:
-
我真的不明白输入是什么。您想计算大量数字的
gcd,还是有两个数字的“元组”要分别计算所有这些元组的gcd? -
@WillemVanOnsem 感谢您的回复,我刚刚更新了我的问题
-
提示:
gcd可以递归应用:gcd {a,b,c,d,e,f} == gcd(gcd(gcd(a,b),gcd(c,d)),gcd(e,f))。 -
@WillemVanOnsem ,是的,我知道如何递归地实现它,但是如何使用 Hadoop 来实现呢?
-
@bxfvgekdv:根据我读到的内容,您只能使用 hadoop 进行尾递归吗?
标签: java apache hadoop parallel-processing hadoop2