千万不要迷信规律:大反例合集
数学猜想并不总是对的,错误的数学猜想不占少数。只不过因为反例太大,找出反例实在是太困难了。这篇日志收集了很多“大反例”的例子,里面提到的规律看上去非常诱人,要试到相当大的数时才会出现第一个反例。
千万不要迷信规律
圆上有 n 个点,两两之间连线后,最多可以把整个圆分成多少块?
上图显示的就是 n 分别为 2 、 3 、 4 的情况。可以看到,圆分别被划分成了 2 块、 4 块、 8 块。规律似乎非常明显:圆周上每多一个点,划分出来的区域数就会翻一倍。
事实上真的是这样吗?让我们看看当 n = 5 时的情况:
果然不出所料,整个圆被分成了 16 块,区域数依旧满足 2n-1 的规律。此时,大家都会觉得证据已经充分,不必继续往下验证了吧。偏偏就在 n = 6 时,意外出现了:
此时区域数只有 31 个。
最有名的素数生成公式
1772 年,Euler 曾经发现,当 n 是正整数时, n2 + n + 41 似乎总是素数。事实上,n 从 1 一直取到 39,算出来的结果分别是:
43, 47, 53, 61, 71, 83, 97, 113, 131, 151, 173, 197, 223, 251, 281,
313, 347, 383, 421, 461, 503, 547, 593, 641, 691, 743, 797, 853,
911, 971, 1033, 1097, 1163, 1231, 1301, 1373, 1447, 1523, 1601
这些数全都是素数。第一次例外发生在 n = 40 的时候,此时 402 + 40 + 41 = 402 + 40 + 40 + 1 = (40 + 1)(40 + 1) = 41 × 41。
xn - 1 的因式分解
x2 - 1 分解因式后等于 (x + 1)(x - 1) 。 x20 - 1 分解因式后等于
(x - 1) (x + 1) (x2 + 1) (x4 - x3 + x2 - x + 1) (x4 + x3 + x2 + x + 1) (x8 - x6 + x4 - x2 + 1)
对于所有的正整数 n , xn - 1 因式分解后各项系数都只有可能是 1 或者 -1 吗?据说有人曾经算到了 x100 - 1 ,均没有发现反例,终于放心大胆地做出了这个猜想。悲剧的是,这个猜想是错误的,第一个反例出现在 n = 105 的情况, x105 - 1 分解出来等于
(x - 1) (x2 + x + 1) (x4 + x3 + x2 + x + 1) (x6 + x5 + x4 + x3 + x2 + x + 1)
(x8 - x7 + x5 - x4 + x3 - x + 1) (x12 - x11 + x9 - x8 + x6 - x4 + x3 - x + 1)
(x24 - x23 + x19 - x18 + x17 - x16 + x14 - x13 + x12 - x11 + x10 - x8 + x7 - x6 + x5 - x + 1)
(x48 + x47 + x46 - x43 - x42 - 2 x41 - x40 - x39 + x36 + x35 + x34 + x33 + x32 + x31 - x28
- x26 - x24 - x22 - x20 + x17 + x16 + x15 + x14 + x13 + x12 - x9 - x8 - 2 x7 - x6 - x5 + x2 + x + 1)
以 2 为底的伪素数
下面是当 n 较小的时候, n 与 2n - 2 的值。
似乎有这样的规律: n 能整除 2n - 2 ,当且仅当 n 是一个素数。如果真是这样的话,我们无疑有了一种超级高效的素数判定算法( 2n 可以用二分法速算,期间可以不断模 n )。国外数学界一直传有“中国人 2000 多年前就发现了这一规律”的说法,后来发现其实是对《九章算术》一书的错误翻译造成的。再后来人们发现,这个规律竟然是错误的。第一个反例是 n = 341,此时 341 能够整除 2341 - 2 ,但 341 = 11 × 31 。
事实上,根据 Fermat 小定理,如果 p 是素数,那么 p 一定能整除 2n - 2。不过,它的逆定理却是不成立的,上面提到的 341 便是一例。我们把这种数叫做以 2 为底的伪素数。由于这种素数判定法的反例出人意料的少,我们完全可以用它来做一个概率型的素数判定算法。事实上,著名的 Miller-Rabin 素性测试算法就是用的这个原理。
Perrin 伪素数
定义 f(n) = f(n - 2) + f(n - 3) ,其中 f(1) = 0 , f(2) = 2 , f(3) = 3 。这个数列叫做 Perrin 数列。
似乎有这么一个规律: n 能整除 Perrin 数列的第 n 项 f(n) ,当且仅当 n 是一个素数。如果这个规律成立的话,我们也将获得一个效率非常高的素数检验方法。根据 MathWorld 的描述,1899 年 Perrin 本人曾经做过试验,随后 Malo 在 1900 年, Escot 在 1901 年,以及 Jarden 在 1966 年都做过搜索,均未发现任何反例。直到 1982 年, Adams 和 Shanks 才发现第一个反例 n = 271 441 ,它等于 521 × 521 ,却也能整除 f(271 441) 。下一个反例则发生在 n = 904 631 的时候,再下一个反例则是 n = 16 532 714 。这种反例被称为 Perrin 伪素数。
最经典的大反例
说到大反例,这是我最喜欢举的例子。下面是大于 1 的正整数分解质因数后的结果:
2 = 2
3 = 3
4 = 2 × 2
5 = 5
6 = 2 × 3
7 = 7
8 = 2 × 2 × 2
9 = 3 × 3
10 = 2 × 5
...
其中,4、6、9、10 包含偶数个质因子,其余的数都包含奇数个质因子。你会发现,在上面的列表中一行一行地看下来,不管看到什么位置,包含奇数个质因子的数都要多一些。1919 年,George Pólya 猜想,质因子个数为奇数的情况不会少于 50% 。也就是说,对于任意一个大于 1 的自然数 n ,从 2 到 n 的数中有奇数个质因子的数不少于有偶数个质因子的数。这便是著名的 Pólya 猜想。
Pólya 猜想看上去非常合理――每个有偶数个质因子的数,必然都已经提前经历过了“有奇数个质因子”这一步。不过,这个猜想却一直未能得到一个严格的数学证明。到了 1958 年,英国数学家 C. B. Haselgrove 发现, Pólya 猜想竟然是错误的。他证明了 Pólya 猜想存在反例,从而推翻了这个猜想。不过,Haselgrove 仅仅是证明了反例的存在性,并没有算出这个反例的具体值。Haselgrove 估计,这个反例至少也是一个 361 位数。
1960 年,R. Sherman Lehman 给出了一个确凿的反例:n = 906 180 359。而 Pólya 猜想的最小反例则是到了 1980 年才发现的:n = 906 150 257。
Fermat 大定理还能推广吗?
Fermat 大定理说,当 n > 2 时,方程 xn + yn = zn 没有正整数解。 Euler 曾经猜想,当 n > k 时,方程 x1n + x2n + … + xkn = yn 都没有正整数解。 1986 年,Noam Elkies 给出了方程 x4 + y4 + z4 = w4 的一个正整数解,从而推翻了这个猜想。这个反例是:2 682 4404 + 15 365 6394 + 18 796 7604 = 20 615 6734 。
XX 型平方数
11, 22, 33, 44, 55, 66, 77, 88, 99, 1010, 1111, 1212, … 都不是完全平方数。有没有什么数,把它连写两次后,正好是一个完全平方数呢?有。第一个这样的数是 13 223 140 496 ,把它连写两次将得到 1 322 314 049 613 223 140 496 ,是 36 363 636 364 的平方。第二个这样的数则是 20 661 157 025 ,它对应了 45 454 545 455 的平方。更多信息可见 http://oeis.org/A102567 。
总是相等吗?
下面是 n 为正整数时, 2 / (21/n - 1) 取上整的结果与 2n / ln(2) 取下整的结果:
这两者的结果总是相等吗?不是的。第一个反例是 n = 777 451 915 729 368,前者算出来的结果是 2 243 252 046 704 767 ,但后者是 2 243 252 046 704 766 。下一个反例则出现在 n = 140 894 092 055 857 794 的时候。更多信息可见 http://oeis.org/A129935 。
至今仍未找到的反例
有没有什么猜想,明明已经被推翻了,所有人都知道存在反例,但因为反例实在是太大了,直到现在仍然没有找到呢?有。下面这张表展示了 n 取不同值时 pi(n) 和 li(n) 的值,其中 pi(n) 表示不超过 n 的素数的个数,li(n) 则是对数积分 ∫0n dx/ln(x) 。
pi(n) 是否永远小于 li(n) 呢?1914 年,Littlewood 证明了存在一个大数 n 使得 pi(n) ≥ li(n) ,不过却并没有给出一个具体的 n 值来。1955 年,Skewes 给出了这样的 n 值的一个上界:在 10^(10^(10^963)) 以内,必有一个满足 pi(n) ≥ li(n) 的 n 。
虽然数学家们正在不断地改进上界(目前的上界大约是 e727.9513 ),但仍然无法找出一个具体的 n 来。原因很简单――这个反例实在是太大了。
几个主要来源:
http://www.guokr.com/article/9688/
http://mathoverflow.net/questions/15444
如果你对此感兴趣,不要错过数学史上的一篇经典论文:The Strong Law of Small Numbers
建议继续学习:
- 为什么Fibonacci数列相邻两项之比会趋于0.618? (阅读:4359)
- Fibonacci数列性质的组合证明 (阅读:3100)
- 跨越千年的RSA算法 (阅读:2987)
- 数学冷知识:不断取英文表达的字符数,最后总会得到数字4 (阅读:2586)
- 数论的应用-RSA公钥算法 (阅读:2586)
- 蛋疼研究之怎样刷屏最快? (阅读:2335)
- Hofstadter的非线性递推数列 (阅读:1957)
- 几个精彩的数论问题 (阅读:1745)
扫一扫订阅我的微信号:IT技术博客大学习
- 作者:Matrix67 来源: Matrix67: My Blog
- 标签: 反例 数列 数论
- 发布时间:2011-07-15 00:02:37
- [55] IOS安全–浅谈关于IOS加固的几种方法
- [53] 如何拿下简短的域名
- [52] 图书馆的世界纪录
- [52] android 开发入门
- [50] Go Reflect 性能
- [50] Oracle MTS模式下 进程地址与会话信
- [48] 【社会化设计】自我(self)部分――欢迎区
- [47] 读书笔记-壹百度:百度十年千倍的29条法则
- [36] 程序员技术练级攻略
- [29] 视觉调整-设计师 vs. 逻辑