Nov 5
用抛物线筛选质数
icon1 Matrix67 |icon2 Brain Storm | icon4 2011-11-05 22:49 | icon316 Comments »

    今天见到一种看上去很帅的质数筛选法。在平面直角坐标系上画出抛物线 y = x2 的图像,然后标出抛物线上的所有格点(两坐标均为整数的点)。其中,只有点 (0, 0) 正好在 y 轴上,其余的点要么在 y 轴左侧,要么在 y 轴右侧。把 y 轴左侧除了 (-1, 1) 以外的所有格点与 y 轴右侧除了 (1, 1) 以外的所有格点相连,这些连线将自动避开 y 轴上纵坐标为质数的点。连接足够多的线条之后,质数就逐渐露了出来。

      

    这是因为, (-a, a2) 和 (b, b2) 的连线将经过 (0, a · b) ,这可以通过计算斜率的方法得到验证。这个颇具创意的质数筛选法叫做 visual sieve ,它是由 Yuri Matiyasevich 和 Boris Stechkin 提出的。

查看更多:
http://plus.maths.org/content/catching-primes
http://www.mathteacherctk.com/blog/2011/10/the-parabolic-sieve-of-prime-numbers/

Jun 21

    国外有人发现一个鲜为人知的古董级函数作图软件—— GrafEq 。这个软件只有 2M 大小,它的功能就只有一个:作出形如 x2 + y2 = 1 的二元等式或者不等式的图像。令人惊叹的是,这个软件的图像绘制能力异常强大, Mathematica 等大型专业数学软件完全不是它的对手。
    这个软件早就没再更新了。它的“最新版本”是 2.12 ,只支持 Windows 95 到 Windows XP 的系统,或者 PowerPC 7.12 到 MacOS 9.2 的系统,可见其年代久远。神奇的是,这个软件的官方网站依然健在,而且软件竟然也都能下载。如果你有幸还能装上这款软件,你将有机会重温一次 Windows 95 时代的软件安装画面。

查看更多 »

Jun 13

    某大公司有这么一个规定:只要有一个员工过生日,当天所有员工全部放假一天。但在其余时候,所有员工都没有假期,必须正常上班。这个公司需要雇用多少员工,才能让公司一年内所有员工的总工作时间期望值最大?
    假设一年有 365 天,每个员工的生日都概率均等地分布在这 365 天里。

查看更多 »

May 2

    假设 X 、 Y 是两个有限集合,f:X→Y 和 g:Y→X 是两个函数。求证:复合函数 g∘f 和 f∘g 拥有相同数量的不动点(也就是说 g(f(x)) = x 和 f(g(y)) = y 的解的个数相同)。

    下面先提供一个“正常”的解法。观察函数 g∘f 的不动点,可以看出它有以下两个性质:首先,如果某个 x 是 g∘f 的不动点,即 x = g(f(x)) ,那么 f(x) = f(g(f(x))),这就说明 f(x) 是 f∘g 的一个不动点;另外,如果 x1 和 x2 是 X 中两个不同的不动点,则函数 f 不可能把它们映射到 Y 中的同一个元素,否则 g 没办法把它分别还原成 x1 和 x2 。结合上面两点可以看出, f∘g 中的不动点至少和 g∘f 的一样多。

    同理,考察 f∘g 的不动点,可知 g∘f 的不动点至少和 f∘g 的一样多。这就说明了 g∘f 和 f∘g 拥有相同数量的不动点。

查看更多 »

Feb 13

    首先,祝大家情人节快乐。不过,对于单身 Geek 来说,情人节或许并不快乐。情人节可以说是各种 Geek 们永久的伤痛了。即使是热爱数学的你,或许看到已经被转发到烂的“心之函数”今日再度走红,心中也会觉得不爽:我们发明出来的 Geek 玩物,竟然都被你们这些非 Geek 人士拿去装 Geek 泡妞用了,最终情人节宅在家里面向显示器编程度过平凡一天的反而还是我们这群 Geek 。

  

    于是乎,“订完全部大床房”、“买光影院单号位”、“扎破所有安全套”等经典段子年年少不了。当然,我也没有闲着。为什么有 Geek 式的爱情祝福,就没有 Geek 式的分手诅咒?我计划着创作一个“分手函数”,它的函数图像是一个裂成两半的心。

查看更多 »

Dec 1

    最近看到一类有趣的问题:如何求解 f(f(x)) = g(x) ?我在网上简单搜索了一下,发现这里面真是大有文章。最先对这个问题进行系统研究的应该是 Hellmuth Kneser ,他把函数迭代的次数扩展到了非整数的情况,求解 f(f(x)) = g(x) 就可以更简单地说成是求解 g(x) 迭代 1/2 次后的结果,更形象的说法就是 g(x) 的“平方根”。 Hellmuth Kneser 还对 f(f(x)) = e^x 的解进行了研究,从之后的数学论文发表情况来看,这也是数学家们最关心的问题。

    e^x 的“平方根”究竟是什么样的呢?不妨假设满足要求的 f(x) 也是一个连续递增的函数,那么它的增长速度必然超过一切多项式函数(否则迭代的结果还是多项式),同时也必然小于一切指数形式的函数。而事实上,求解一个满足要求的 f(x) 并不难;稍作思考,我们就能够给出一个看似有些平凡的答案。

    取任意一个负数,记作 a 。选取任意一个在 (-∞, a] 上单调递增的函数,使得当 x 从 -∞ 增加到 a 时,函数值也从 a 增加到 0 。这样一来,当 x 趋于负无穷时, f(x) 趋于 a , f(f(a)) 就正好趋于 0 了。但 f(a) = 0 ,那么 f(0) 就必须是 e^a ;而考虑到 f(0) = e^a ,那么 f(e^a) 便只能取 1 了。同理,f(1) = e^(e^a),而 f(e^(e^a)) 就等于 e 。以此类推,我们便得到了一连串满足要求的点。我们可以从 (-∞, a] 上的其它点出发,用同样的方法填充上述“端点值”之间的部分,得到满足要求的 f(x) 。

    根据这个思想,我们可以构造出一个具体的 f(x) 来。取 a = -1,在 (-∞, -1] 上定义 f(x) = e^(x+1) - 1,它的函数值正好从 -1 变到了 0 。在 (-1, 0] 上,则有 f(x) = e^(f-1(x)) = e^(ln(x + 1) - 1) = (x + 1)/e 。对于其它的 x ,则递归地定义为 f(x) = e^(f(ln(x))) 。由此我们便得到一个分段函数,正是这个分段的办法才让它夹在了多项式增长和指数级增长之间:

查看更多 »

Nov 11

Sep 29

    最近,一道 Google 校园招聘面试题红遍了整个中文网络:

    现在北京有一套房子,价格 200 万,假设房价每年上涨 10% ,一个软件工程师每年固定能赚 40 万。如果他想买这套房子,不贷款,不涨工资,没有其他收入,每年不吃不喝不消费,那么他需要几年才能攒够钱买这套房子?
    A. 5年
    B. 7年
    C. 8年
    D. 9年
    E. 永远买不起

    并不让人感到意外,这道题的答案选 E 。这背后的数学道理就是,线性的增长速度毕竟是赶不上指数级的增长速度的。我用 Mathematica 画了一个简单的图,按照题目所给数据模拟了 50 年内的房价和收入情况。可见,尽管底数仅仅是 1.1 ,指数级增长的威力也一如既往的令人震撼。

 
    
 
    唉⋯⋯什么时候工资也能成比地增长就好了。
 

« 更早的日志