有一些正整数虽然很大,甚至超过了20位,不过我们也能用二十甚至更少的字将其表示出来。比如1 000 000 000 000我可以表示为“1后面12个0”,1 428 329 123 020 800我可以表示为“前14个正偶数的积”。现在,我就要证明一个非常惊人的结论:事实上,任何的正整数都可以用20个以内的汉字表达出来!
证明的基本思路是反证法。假设存在不能在20个以内的汉字表达的正整数,那么一定有一个最小的不能在20个以内的汉字表达的正整数,而这个数我已经用“最小的不能在二十个以内的汉字表达的正整数”表达出来了,所以,我的假设是错误的。所以任何的正整数都可以用20个以内的汉字表达出来。
可是仔细一想,汉字的个数是有限的,所以能组成的句子总数有限,而正整数却有无限个,不可能每个数都有对应的句子。那问题究竟在哪呢。
什么叫做用汉字表达一个数字?在这些句子中,有的可能不合语法;有的可能表达有歧义;有的可能根本不是在表示一个数字;有的句子技术性语句太多导致很难算出表示的是哪一个数。我们先不管,假设有一个程序,允许用户每次输入一个不超过二十个字的语句,程序就会自动判断这条语句是否在表达一个数,如果是,就输出这个数。那么,总会有一个数是这个程序无法输出的,那么我们就可以输入“最小的程序无法输出的正整数”,而这一句话本身就不超过二十个字,是可以输入到程序里的。但是,程序会怎么想呢,“啥?啥程序?啥最小?我是谁我在哪,奇怪的知识增加了”,所以,程序无法输出这个数,你也就等于没有用20个以内的汉字表达出这个正整数。
类似的“这个数可以用‘最小的不能在二十个以内的汉字表达的正整数’表达出来”,这句话里,里面的“表达”和外面的“表达”范围明显不同。我们把里面的表达叫做表达a,外面那个表达叫做表达b。这句话不就变成了“这个数可以用‘最小的不能在二十个以内的汉字表达a的正整数’表达b出来”。这两个表达有什么不同呢,明显可以看出,表达b里面可以使用表达a,而表达a里面肯定不能使用表达b。所以,最小的不能在二十个以内的汉字表达a的正整数,被我们用20个以内的汉字表达b出来了,没有任何矛盾。
这个悖论叫Betty悖论,伯特兰▪罗素提出。为什么叫Betty悖论呢,是因为这是由牛津大学的图书管理员G. G. Betty提出的。这个悖论揭示了“系统之内”与“系统之外”的区别。