问题来自于我的一个朋友推荐的游戏:每个人写一个四位正整数,正弦值最大的人赢.
解决问题的关键是寻找最接近π2的4k+1(k∈N∗)倍的四位数.
首先,利用连分数π2=[1;1,1,3,31,1,145,…]
得到一个π2的分数近似pq,其中分子p不超过四位数,分母q模4余1,经过计算得到699445符合要求.
接下来,利用密率π≈355113可得226π≈710,因此得到四位数699+710=1409,这个四位数的正弦值为sin1409=0.9999907939205…,
此结果已经非常好了.
但是问题没有结束,注意到699445比π2略小,而355113比π略大,因此可以不停的追加710,使得四位数更靠近π2的4k+1(k∈N∗)倍.受限于四位数,我们得到699+710×13=9929,
这个四位数的正弦值为sin9929=0.9999935858249…,
这个结果是用该方案得到的最好结果了.
经过编程验证,四位数9929的确是四位数中正弦值最大的,这对我而言无疑是一个惊喜:)
注 关于追加710:
第一,实际上是需要验算的,因为怕加爆了(玩过凑21点的扑克牌游戏吧).
第二,听说原版是计算正切值,这样一来如果不让验算,那么写出1409以后,是不敢追加710的.因为和正弦不同,正弦的情况下爆了就爆了,损失不大;正切的情况下爆了就亏大了!
第三,经过验算,正弦值最大的四位数的确就是正切最大的四位数.
第四,这个问题最有趣的部分就在于最后追加710的那种贪心不足又怕从天堂坠入地狱的矛盾心态.