要插入[a,b]中的最小数量,使得2个连续数字的GCD为1

时间:2013-05-03 05:57:27

标签: algorithm math primes proof

TopCoder - SRM 577中提出了这个问题。给定1 <= a < b <= 1000000ab之间插入的最小数量是多少? a = 2184使得没有两个连续的数字将共享大于1的正数除数。

示例:

  1. b = 2200; 2195。我们需要插入2个数字2199&amp; a = 7使条件成立。 (2184,的 2195,2199 下,2200)
  2. b= 42; a = 17。一个数字足以插入它们之间。数字可以 11
  3. b = 42; a。 GCD已经是1,因此无需插入任何数字。
  4. 现在,有趣的是,对于给定范围 [1,1000000] ,我们永远不需要在ba+1之间插入超过2个元素。更重要的是,这两个数字被推测为b-1[1,10^18],但尚未得到证实。

    1. 有人可以证明这一点吗?
    2. 它可以扩展到更大范围的数字吗?说,{{1}}等

4 个答案:

答案 0 :(得分:2)

对不起,对不起。我的反例是

a=3199611856032532876288673657174760
b=3199611856032532876288673657174860

(如果这个愚蠢的网站允许每个人编辑其帖子会很好)

答案 1 :(得分:1)

每个号码都有一些因子分解。如果ab每个都有一些不同的素因子 DPF ),并且它们之间的距离很大,那么肯定有它们之间至少有一个数字,其中 DPF 的集合与两者没有共同点。因此,这将是我们的一个号码选择n,例如gcd(a,n) == 1gcd(n,b) == 1。我们走得越高,可能的素数因素越多,偶数gcd(a,b)==1的概率越高越高,一个中间数解决方案也是如此。< / p>

什么时候不能使用one-num解决方案?当ab 高度复合时 - 每个都有很多 DPF - 并且彼此之间的距离不是很远,所以每个中间数与其中一个或两个具有一些共同的主要因素。但对于任何gcd(n,n+1)==1 n ,总是;因此,选择a+1b-1中的一个 - 特别是 DPF 的最小量 - 将减少组合 DPF 设置的大小,并且所以在它们之间选择一个数字是可能的。 (...这远非严格)。


这不是一个完整的答案,更像是一个插图。我们来试试吧。

-- find a number between the two, that fulfills the condition
gg a b = let fs=union (fc a) (fc b) 
         in filter (\n-> null $ intersect fs $ fc n) [a..b]

fc = factorize

试一试:

Main> gg 5 43
[6,7,8,9,11,12,13,14,16,17,18,19,21,22,23,24,26,27,28,29,31,32,33,34,36,37,38,39
,41,42]

Main> gg 2184 2300
[2189,2201,2203,2207,2209,2213,2221,2227,2237,2239,2243,2251,2257,2263,2267,2269
,2273,2279,2281,2287,2291,2293,2297,2299]

只需一个号码就可以在5到43之间,或者在2184到2300之间选择。但是对于给定的对,2184和2200呢?

Main> gg 2184 2200
[]

他们之间不存在任何一个号码。但显然,gcd (n,n+1) === 1

Main> gg 2185 2200
[2187,2191,2193,2197,2199]
Main> gg 2184 2199
[2185,2189,2195]

因此选择了一个相邻的数字,我们确实有足够的可能性来获得第二个数字。你的问题是,证明情况总是如此。

让我们看看他们的因素:

Main> mapM_ (print.(id&&&factorize)) [2184..2200]
(2184,[2,2,2,3,7,13])
(2185,[5,19,23])
(2186,[2,1093])
(2187,[3,3,3,3,3,3,3])
(2188,[2,2,547])
(2189,[11,199])
(2190,[2,3,5,73])
(2191,[7,313])
(2192,[2,2,2,2,137])
(2193,[3,17,43])
(2194,[2,1097])
(2195,[5,439])
(2196,[2,2,3,3,61])
(2197,[13,13,13])
(2198,[2,7,157])
(2199,[3,733])
(2200,[2,2,2,5,5,11])

很明显,范围越大,越容易满足条件,因为贡献的素因子的种类越多。

(a+1)并不总是独立工作 - 考虑2185, 2200案例(类似地,对于2184,2199(b-1)将不起作用。

因此,如果我们碰巧将两个高度复合数字作为我们的ab,那么选择一个相邻的数字将有所帮助,因为通常它只有几个因素。

答案 2 :(得分:0)

这个答案解决了问题的一部分,该部分要求证明{a,a + 1,b-1,b}的子集将始终有效。问题是:“更多的是,这两个数字被推测为+ 1和b-1,尽管尚未得到证实。谁能证明这一点?“这个答案表明不存在这样的证据。

一个证明{a,a + 1,b-1,b}的子集始终有效的例子是{105,106,370,371} = {3·5·7,2,53,2· 5·37,7·53}。设(x,y)表示gcd(x,y)。对于这个例子,(a,b)= 7,(a,b-1)= 5,(a + 1,b-1)= 2,(a + 1,b)= 53,所以所有集合{ A,b}; {a,a + 1,b}; {A,B-1,B};并且{a,a + 1,b-1,b}失败。

此示例是以下推理的结果:我们希望找到a,b,使{a,a + 1,b-1,b}的每个子集都失败。具体地说,我们需要以下四个gcd大于1:(a,b),(a,b-1),(a + 1,b-1),(a + 1,b)。我们可以通过找到一些e,f来划分偶数a + 1然后构造b使得奇数b可被f和a的某个因子整除,而偶数b-1可被e整除。在这种情况下,e = 2和f = 53(因为任意取a = 3·5·7,因此a有几个小的奇素因子)。

答案 3 :(得分:0)

a=3199611856032532876288673657174860
b=3199611856032532876288673657174960

似乎是一个反例。