今天看电影《知无涯着》看到的,所以想编程验证一下。
「的士数」在电影里和在维基百科上看到的故事来源是不一样的,鉴于维基百科更真实一些,所以此处引用维基百科关于「的士数」的故事:
拉马努金病重,哈代前往探望。哈代说:“我乘的士来,车牌号码是 1729,这数真没趣,希望不是不祥之兆。”拉马努金答道:“不,那是个有趣得很的数。可以用两个立方之和来表达而且有两种表达方式的数之中, 1729 是最小的。”(即 ${1729=1^{3}+12^{3}=9^{3}+10^{3}}$,后来这类数称为的士数。)利特尔伍德回应这宗轶闻说:“每个整数都是拉马努金的朋友。”
关于拉马努金:英国皇家学会院士(亚洲第一人),英属印度人,是英属印度史上最著名的数学家之一。
关于哈代:是他在剑桥三一学院任教的时候发现并帮助了拉马努金,可以说是拉马努金的伯乐。
关于利特尔伍德:人们常开玩笑说:利特尔伍德是哈代幻想出来的影子。两人经常合作。
那么该怎么定义「的士数」呢?还是直接引用维基百科:
第 n 个的士数(Taxicab number),一般写作${Ta}(n)$ 或 ${Taxicab}(n)$,定义为最小的数能以 n 个不同的方法表示成两个正立方数之和。
用 C++ 来求解的代码如下:
void printTaxicab2(int N) { |
其实到目前为止也只是找出了 6 个的士数,它们分别是:
$Ta(1)=2=1^{3}+1^{3}$
$Ta(2)=1729=1^{3}+12^{3}=9^{3}+10^{3}$
$Ta(3)=87539319=167^{3}+436^{3}=228^{3}+423^{3}=255^{3}+414^{3}$
$Ta(4)=6963472309248=2421^{3}+19083^{3}=5436^{3}+18948^{3}=10200^{3}+18072^{3}=13322^{3}+16630^{3}$
$Ta(5)=48988659276962496=38787^{3}+365757^{3}=107839^{3}+362753^{3}=205292^{3}+342952^{3}=221424^{3}+336588^{3}=231518^{3}+331954^{3}$
$Ta(6)=24153319581254312065344=582162^{3}+28906206^{3}=3064173^{3}+28894803^{3}=8519281^{3}+28657487^{3}=16218068^{3}+27093208^{3}=17492496^{3}+26590452^{3}=18289922^{3}+26224366^{3}$