李永乐:世界上效率最高的进制

5200 22-03-07 18:07


你知道100⁹⁹和99¹⁰⁰哪个更大吗?

 

先看看两个数的含义:

 

你会发现:无论是99个100,还是100个99,加起来都是9900。

 

所以这个问题变成了:如果你把9900拆成几个数的和,然后把它们乘起来,什么时候乘积最大?

 

小学时候,我的数学老师教过我这个问题。他说:把一个数拆成几个正整数的和,让它们的乘积最大,应该尽量拆3,拆不了3的,就拆2或者4。这个时候乘积就最大。

 

比如,你要12拆成几个正整数的和,再把它们乘起来。你可以拆成12个1、或者6个2、或者4个3、或者3个4、或者2个5和1个2、或者2个6。它们的乘积是:

 

图片

 

你发现没?把12拆成4个3,它们的乘积是81,最大。

 

现在,你要把9900拆成一大堆正整数的和,让它们的乘积最大,那么应该拆成3300个3,它们的乘积最大:

图片

 

如果拆成100个99或者99个100的话,因为99离3更近,所以99¹⁰⁰更大。实际上:

图片

 

这个结论有啥用呢?

 

它可以告诉我们:我们平常用的10进制和计算机的2进制,都没有3进制的效率高。

 

具体来说:大家一定见过小孩玩的算珠计数器吧!如果给你100个珠子,你最多能表示出多少个数呢?

 

图片

 

如果计数器用10进制,那每一位的柱子上需要有10个珠子(不要跟我争论9个珠子也可以,从0到9明明就是10个数),100个珠子可以串满10根柱子,也就是能表示出十位数,总共能表示1010个数;

 

如果用5进制,每一根柱子上需要串5个珠子,一共能串满20位,也就是能表示520个数...

 

以此类推,列一个表格:

 

图片

 

你会发现:同样用100个珠子,使用3进制——每根柱子上串3个珠子,表示33位,效率是最高的,它能表示出最多的数字!

 

我们还可以把进制x作为横坐标,把100个珠子在这种进位制下能表示的数作为纵坐标,画出一幅图,你会发现,在进位制是e=2.71828…时表示的数最多!这个数就是自然常数e!它是一个和圆周率π一样神奇的无理数!

 

图片

 

当然,进位制应该是整数,就找一个最靠近e的数吧——那就是3!

 

我们在生活中用10进制,因为方便,计算机普遍采用二进制,因为符合电路特点。但实际上,3进制才是效率最高的。美国和苏联其实都研究过3进制计算机,不过因为种种原因放弃了。说不定什么时候,人们重启了三进制计算机的研究呢。

 

那么,为什么3有这么神奇的性质呢?

 

其实,这是一个函数极值问题。我们要将一个整数N拆几个x的和,显然可以拆出N/x个数。把它们乘起来,乘积函数f(x)可以写作:

图片

 

现在我们要问:x取多少,这个函数才最大呢?我们对这个函数取对数,再求导数:

图片

 

你会发现:

  • 当x

  • 当x>e时,lnx>1,导函数小于0,f(x)是减函数;

  • 当x=e时,导函数等于0,f(x)取最大值。

 

所以,把一个数拆自然常数e的和,这些数的乘积才是最大的!在自然界中,e进制也是效率最高的。如果必须选择整数,那就选择那个最接近e的整数——3。现在,你明白了吗?

该主题于 2022-03-09 21:23:37 被 小清河 执行【编辑】操作

举报
举报主题
相关跟贴

回复