奇妙的心电图数列

    心电图数列 (EKG Sequence) 的定义简单而有趣:第一项为 1 ,第二项为 2 ,以后的每一项都是最小的和前一项不互质并且不曾出现过的数。换句话说,数列 a(1)=1 , a(2)=2 ,且当 n>2 时取 a(n) 为所有满足以下两个条件的数中最小的那一个:该数与 a(n-1) 有大于 1 的公约数,并且该数与前面 n-1 项都不相等。心电图数列的前面 20 项为

      1, 2, 4, 6, 3, 9, 12, 8, 10, 5, 15, 18, 14, 7, 21, 24, 16, 20, 22, 11 …

    为什么它叫做心电图数列呢?原因很简单——因为把它描绘在图象上时,看上去像一张心电图。

 

Read more…

趣题:数轴上的潜水艇

    说有一个潜水艇,初始时位于数轴上的某个整数点,并沿着数轴以每秒整数个单位的速度做匀速运动(但你不知道具体的初始位置和移动速度是多少,移动方向也是未知的)。每一秒你都可以在某个整数点投放深水炸弹,如果此时潜艇正好在你放炸弹的位置,这个潜艇就被炸掉了。你是否有办法可以保证炸毁潜艇?

    这是可以办到的。不管初始时潜水艇在哪儿,它的速度有多大,我总能在有限的时间里炸毁潜艇。假设潜艇的速度为 a ,初始位置为 b ,则在第 t 秒时它的位置就在 a*t + b 。把所有可能的有序数对 (a,b) 看作是平面直角坐标系上的整格点,每次考虑其中的一个点;假设第 i 秒考虑的点是 (a_i, b_i) ,那就在 a_i * i + b_i 处放一个炸弹。如此重复做下去,每次排除一种情况,直到击中目标为止。现在的问题就是,用怎样的顺序遍历平面上的所有格点才能保证每个 (a,b) 都会在有限的时间里访问到。这个方法就多了,比如从原点开始以一条螺旋线为路径一圈一圈地遍历周围越来越远的点。

    这个问题展示了一些典型的数学思维在传统智力题方面的应用,它背后的数学方法非常深刻。

 
来源:http://www.reddit.com/r/math/comments/as2d5/sinking_the_submarine_a_puzzle/

利用阶乘因子数公式证明素数无穷多

    搞过 OI/ACM 的同学们想必对一道经典题目印象极深:求 n 的阶乘末尾有多少个 0 。注意到末尾的一个 0 是由一个因子 2 和一个因子 5 相乘产生的;但在 n 的阶乘里,因子 5 的个数通常远远少于因子 2 。因此这个问题就等价于问 n 的阶乘里有多少个因子 5 。在 n 的阶乘式中,每个 5 的倍数里都含有一个因子 5 ,每个 25 的倍数里都还含有另外一个因子 5 ,每个 125 的倍数里都还有第三个因子 5 ……因此, n 的阶乘里因子 5 的个数的计算公式就是 ⌊n/5⌋ + ⌊n/25⌋ + ⌊n/125⌋ + … 。如果把 K 的阶乘里素因子 p 的个数记作 Φ(p, K) ,则 Φ(p, K) = Σ⌊K/(p^i)⌋ 。有意思的是,最近 The American Mathematical Monthly 上的一篇文章利用这个公式瞬间证明了素数无穷多的定理。

    如果素数是有限的,则 K 的阶乘就可以写成所有 p^Φ(p, K) 的乘积,其中的 p 取遍所有的素数。注意到 Φ(p, K) = Σ⌊K/(p^i)⌋ < Σ(K/(p^i)) = K/(p-1) < K ,因此对任意正整数 K 都有 K! < (Πp)^K ,其中 Πp 表示所有素数的乘积。但当 K 充分大的时候, K! 显然会超过一个常数的 K 次方,矛盾。因此素数不可能是有限的。   来源:http://www.cut-the-knot.org/wiki-math

UyHiP趣题:自然数划分中的幂关系

    UyHiP上个月的题目:把所有大于 1 的自然数划分成两个集合,证明至少能在其中一个集合里找到互不相同的三个数 a 、 b 、 c 满足 a^b=c 。然后,试着给出一种划分,使得只有其中一个集合里存在这样的三元组。
    Update: 后一个问题要求两个集合都是无限集。感谢网友 Triple.J 的提醒。

    证明:如果集合 A 里只有有限个数,那就在集合 B 里选两个比集合 A 中的最大数还大的数 a 和 b ,显然 a^b 也在集合 B 里。类似的,若集合 B 里只有有限个数,我们立即可知 A 中存在满足 a^b=c 的三元组。因此,我们只需要讨论两个集合里都有无穷多个数的情况。
    从集合 A 里选一个数 x ,从集合 B 里选一个数 y 。无妨假设 xy 在集合 A 中。在集合 A 中选一个比 xy 大的数 r 。由于集合 A 是无限大的,因此这样的数总存在。由于 r 比 xy 大,因此 x 、 y 、 xy 、 r 、 r^x 、 r^(xy) 这六个数两两不同。为了避免在同一集合里出现满足要求的三元组, r^x 和 r^(xy) 都必须在集合B里面,但这样的话, r^x 、 y 和 r^(xy) 就成了符合要求的三元组了。
    后一个问题则出奇的简单:把所有素数放进一个集合,所有合数放进另一个集合。显然,一个素数不可能是另一个素数的整数次幂

    这个月的题目非常有意思,点击这里围观。

经典证明:用信息熵证明素数无穷多

    偶然读到一个非常帅的证明:用信息熵可以瞬间证明素数有无穷多个。这个证明比本 Blog 之前讲过的五种非主流证明 (282, 539, 1678) 看上去都要帅,并且更重要地,它道出了素数无穷多的根本原因:只有无穷多的素数,才有能力表达出如此丰富的自然数世界。
    假设我们从所有不超过 n 的自然数中随机选取一个数 N ,并把它分解成质因数的乘积 N = P1^X1 * P2^X2 * … * Pm^Xm,其中 m 是不超过 n 的素数的个数。注意到由于 2^Xi ≤ Pi^Xi ≤ N ≤ n 对所有 i 都成立,因此我们有 Xi ≤ log(n) 。真正帅的地方来了。考虑随机选取一个 N 带来的信息熵,我们有:

log(n) = H(N)
         = H(X1, X2, …, Xm)
         ≤ H(X1) + H(X2) + … + H(Xm)
         ≤ log(log(n)+1) * m

    上面的第一个等号是由信息熵的定义直接得出的。第二个等号是由唯一分解定理得到的:由于一个数可以唯一地分解为质因数的乘积,因此 N 和 (X1, X2, …, Xm) 是一一对应的,知道了前者也就确定了后者,它们的信息熵是相同的。第三行的不等式是由于我们放开了 Xi 的取值条件(每个 Xi 独立取值可能会导致它们的乘积超过 n ),必然会增加结果的不确定性。而每个 Xi 的取值范围不会超出 0 到 log(n) ,最多 log(n)+1 种情况,因此 H(Xi) ≤ log(log(n)+1) ,这就得到了第四行的那个不等式。
    整理上式,我们得到了 m ≥ log(n) / log(log(n)+1) ,这不但告诉我们当 n 趋于无穷大时不超过 n 的素数个数也是趋于无穷的,还给出了不超过 n 的素数个数的一个下界。