我有一个数组,必须确定必须对元素进行的最小添加次数(ADDITION BY 1),使它们不再是互质的(GCD> 1) 我可以递归检查gcd是否> 1。如果不是,我认为最简单的GCD将是2,所以我可以将所有奇数加1,并将GCD设为2,但是对于极少数/无偶数且更容易的情况,这会失败生成其他GCD,例如11,33,55和76.这里我可以添加1到76并将GCD从1更改为11,而不是通过增加3次并将GCD设置为2来更改11,33和55。 我想知道最有效的方法。检查阵列的GCD也是O(nlogn)。
答案 0 :(得分:1)
您可以找到每个元素的素数因子分解,然后计算分解中每个素数的元素数。所需的添加数量为 [元素数] - [MAX(素数)] 。
例如,[11,33,55,76]的因子分解是:
11:11 ^ 1
33:3 ^ 1 * 11 ^ 1
55:5 ^ 1 * 11 ^ 1
76:2 ^ 2 * 19 ^ 1
素数是:
2:1
3:1
5:1
11:3
19:1
最高计数为3,有4个元素,所以你需要1个加法(4 - 3)。如果您需要知道需要添加哪些元素,那么它的因子分解不包含最大计数素数。