【发布时间】:2015-12-26 15:02:59
【问题描述】:
给定一组正整数和一个整数k。 集合中的所有元素都可以被k整除。
如何检查k是否是集合中一些元素的最大公约数?
我的想法:对于集合中的每个元素 a[i],我将其除以 k。然后我得到集合中所有元素的 GCD(在我划分后改变了)。如果 GCD 等于 1,则 k 是集合中某些元素的 GCD。
我做了一些测试用例,我看对了。但在线法官不接受。请给我一个想法,或者检查我的算法并修复它。非常感谢。
让我说得更清楚:
例如,a = {10, 15, 18}:
k = 5 是 GCD(10, 15)。答案是true
k = 3 是 GCD(15, 18)。答案是true
k = 1 是 GCD(10,15,18)。答案是true
k = 6 不是任何包含超过 2 个整数的组的 GCD。答案是false
集合大小:
编辑:抱歉举了一个错误的例子。这是我的错误。 k = 3 不是 GCD(10, 18)。但我想你可能知道这是15,对吧。 :) 感谢您的回答、cmets 和贡献。我在下面投了一个接受的答案。
【问题讨论】:
-
@Paulo:实际上,这是我问过here 的另一个问题中的一件小事。所以我只是想检查一下这个想法是否正确。 :)
-
看看我的代码是否符合你的要求。
-
我更新了一个例子。请查阅。 :)
-
好的,现在我看到您需要数组中的任意两个值组。是对的吗?如果是这样,我可以给你另一个答案。
-
"k=3 是 GCD(10, 18)" ??? 3 不是 10 的除数,更不是最大公约数.....
标签: algorithm math greatest-common-divisor