整数数组上的可除性算法

时间:2018-03-22 20:03:04

标签: algorithm math data-structures

您将获得一个正整数数组A.您需要创建数组A的子集,其中元素的最大数量具有属性,但是我们可以使用任意两个数量的子集(我们可以将其称为x和y ),我们得到gcd(x,y)高于1.打印子集的元素。

例如,如果我们有n = 4且数组为{15,7,10,6},则输出必须为{15,10,6}。

有没有比回溯更快的解决方案?

2 个答案:

答案 0 :(得分:2)

是的,我认为你有更好的解决方案。将其转换为图形问题:每个整数都是一个节点;两个节点ij具有连接它们的边 iff gcd(i,j)> 1。

现在,你需要找到最大的完全连接的子图,(a.k.a.一个集团)。一些研究将向您展示如何实现它。它效率不高,但更易于处理和可靠。

答案 1 :(得分:0)

这相当于Clique problem。所以不,没有有效的解决办法(除非P = NP)。