【发布时间】:2016-01-01 14:54:06
【问题描述】:
我得到了一个数组,并且必须确定必须对元素进行的最小加法数(ADDITION BY 1),以使它们不再互质(GCD> 1) 我可以递归地检查gcd是否> 1。如果不是,我认为最容易获得的 GCD 是 2,因此我可以将所有奇数加 1 并将 GCD 设为 2,但是对于偶数很少/没有偶数且更容易的情况,这将失败生成其他 GCD,例如 11、33、55 和 76。在这里,我可以将 1 加到 76 并在 1 步中将 GCD 从 1 更改为 11,而不是通过进行 3 次加法并将 GCD 变为 2 来更改 11,33 和 55。 我想知道最有效的方法。检查数组的 GCD 也是 O(nlogn)。
【问题讨论】:
-
这个问题是否来自编码竞赛/挑战(在线或其他...)?
-
我想不到。当我在几天前阅读的电子书中偶然发现这一点时,我正在解决 GCD 上的一些问题并学习素因数、欧拉函数等。我想了一会儿,但我根本想不出一个解决方案,这就是我问的原因。
-
你确定你的意思是最小化附加值的总和?
-
起初我只想找到一种方法来确保它们都不互质,最小化会在最后出现。如果我不想最小化它们,难道不将它们全部转换为偶数吗?这是我想到的第一件事,然后像我提到的那样开发了这些案例,如果有更好的方法可以做到这一点。
-
我投票结束这个问题作为离题,因为没有尝试解决这个问题,OP 正在要求某人为他解决一个在线编程难题。
标签: arrays algorithm greatest-common-divisor