如何通过以最小的步数递增每个数,使整数数组都相对质数?
到目前为止,我已经提出了这样的策略:
1)除以它们的公倍数(比如k,然后我执行的每一步将等于k)
2)递增“最接近”质数的数字
但是,我不确定这个策略的正确性。
有人有更好的主意吗?
例如,a[5]={2,4,6,7,8}
溶液在7步中应为{2,5,9,7,11}。

最佳答案

可以对所有整数n使用gcd(n,n+1)=1。因此,一种可能的策略是取绝对差最小的两个数,并使较小的数等于the_value_of_the_bigger_one - 1
顺便说一下,我认为你的第二个策略是不正确的假设下一个质数是p,然后你可以构造一个数组,在这个数组中,所有的数字(除了你正在增加的数字)都可以用p作为_因子。当你增加它时,数组的gcd将等于p。示例数组可以是(24,2,48)--当前gcd是2,但是当你尝试第二种策略时,数组将变成(24,3,48),它的gcd等于3。

关于algorithm - 如何以最小步长增加每个数字以使所有整数都相对质数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20451144/

10-14 04:18