【发布时间】:2013-10-20 18:30:30
【问题描述】:
给定n个正整数的集合A,确定一个非空子集B 由尽可能少的元素组成,使其 GCD 为 1 并输出其大小。
例如:
5
6 10 12 15 18产生“3”的输出,而:
5
2 4 6 8 10等于“NONE”,因为无法确定子集。
所以它看起来很基本,但我仍然坚持它。我对此的想法如下:我们知道集合中已经存在某个数字的倍数是没有用的,因为它们的除数是某个因子 k 的倍数,我们要寻找最小的子集。因此,对于每个 ni,我们从进一步的计算中删除任何 kni,其中 k 是正整数。
不过,这就是我卡住的地方。接下来我该怎么做?如果已经有一些 2-element 子集,然后是 3-elem 等等,我只能想到一种愚蠢的、蛮力的尝试方法。我应该检查什么才能以更聪明的方式确定它?
【问题讨论】:
-
预期的时间/内存复杂度是多少?
-
没有,我只是想把最有效的方法作为算法训练的一种形式。
-
另见此链接。也许它会有所帮助。 cs.stackexchange.com/questions/10249/…
-
只是对读者的警告 - 看起来“互质子集”的定义与此处最近的问题略有不同。
标签: algorithm