殘殺戰俘的數學故事
在一次戰爭中,64名戰士被俘虜了。敵人命令他們排成一個圓圈,分別編上1、2、3、4……64的號碼。然后,從1號開始殘殺,接著是3號、5號……隔一個殺一個。這樣轉著圈殺,最后剩下一個人,這個人就是約瑟夫斯。請問:約瑟夫斯是多少號?
敵人從1號開始,隔一個殺一個,就是第一圈把奇數號碼戰士全殺死了。剩下32名戰士需重編號,而第二圈殺死的是重新編排的奇數號碼。第一圈剩下全部是偶數號2、4、6……64。因為先前64名戰士已經被殺害一半,所以剩下的人是64除以2,共32個人,他們重新編的號碼是1、2、3……32。而第二圈殺過之后,又把這一次編成的奇數號碼的戰士全都殺掉了,還剩下16個人。這樣一直到最后,剩下的必然是一開始的64號,所以答案是約瑟夫斯是64號。
再把問題改一下:不讓戰俘站成圓圈,而排成直線,再編上號碼。從1號開始,隔一個殺一個,殺過一遍之后,然后再重新編號,從新1號開始,再隔一個殺一個,問最后剩下的還是64號約瑟夫斯嗎?答案是肯定的。
如果戰俘人數是65人呢?這回剩下的還是約瑟夫斯。只要人數不超過128,那么最后剩下的總是約瑟夫斯。因為從1到128中間,能被整除次數最多的就是64。而敵人每次都是殺奇數號,留偶數號,所以64號總是最后被留下的人。
上一篇:有趣的斐波拉契數列
下一篇:比計算機還快的神童