在TopCoder - SRM 577中提出了这个问题。给定1 <= a < b <= 1000000
,a
和b
之间插入的最小数量是多少? a = 2184
使得没有两个连续的数字将共享大于1的正数除数。
示例:
b = 2200
; 2195
。我们需要插入2个数字2199
&amp; a = 7
使条件成立。 (2184,的 2195,2199 下,2200)b= 42
; a = 17
。一个数字足以插入它们之间。数字可以 11 。b = 42
; a
。 GCD已经是1,因此无需插入任何数字。现在,有趣的是,对于给定范围 [1,1000000] ,我们永远不需要在b
和a+1
之间插入超过2个元素。更重要的是,这两个数字被推测为b-1
和[1,10^18]
,但尚未得到证实。
答案 0 :(得分:2)
a=3199611856032532876288673657174760
b=3199611856032532876288673657174860
(如果这个愚蠢的网站允许每个人编辑其帖子会很好)
答案 1 :(得分:1)
每个号码都有一些因子分解。如果a
,b
每个都有一些不同的素因子( DPF ),并且它们之间的距离很大,那么肯定有它们之间至少有一个数字,其中 DPF 的集合与两者没有共同点。因此,这将是我们的一个号码选择n
,例如gcd(a,n) == 1
和gcd(n,b) == 1
。我们走得越高,可能的素数因素越多,偶数gcd(a,b)==1
的概率越高越高,一个中间数解决方案也是如此。< / p>
什么时候不能使用one-num解决方案?当a
和b
高度复合时 - 每个都有很多 DPF - 并且彼此之间的距离不是很远,所以每个中间数与其中一个或两个具有一些共同的主要因素。但对于任何gcd(n,n+1)==1
, n
,总是;因此,选择a+1
或b-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)
将不起作用。
因此,如果我们碰巧将两个高度复合数字作为我们的a
和b
,那么选择一个相邻的数字将有所帮助,因为通常它只有几个因素。
答案 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
似乎是一个反例。