相信大家小學的時候,都會遇到像下面這樣的數學題:
問題1:
假如今天是星期一,明天是第一天,請問10天後是星期幾?
我們把這道題給小學生來做的話,相信絕大部分都會得到正確答案。畢竟絕大部分小學生都會數數,往後數10天就okk了。
下面我們把我們的問題變難一點:
問題2:
假如今天是星期一,明天是第一天,請問10²天后是星期幾?
這道題,有一部分小學生做不出來了。我們把這道題給中學生來做的話,很大一部分可以把這道題做出來。
我猜,大部分人都是用下面這個方法:
解:不難發現,每過了7天,都會回到原型(即星期一)
所以下面看看100天裡面
一共有多少個7天
100=7*14+2
即經歷了14個輪迴(98天)之後,
回到了星期一
再往後算2天,剛好一百天,
所以100天之後是星期三。
我們再把問題變難一點:
小學生不要往下看了
10^32除以7的餘數是2.
當然啦,現在有計算機了,計算10^32除以7的餘數還是很簡單的。當這些數很大很大的時候,我們就要考慮設計其他的算法來解決這個問題。有一個想法就是把「大數」拆成很多「小數」,接著通過「小數」的性質來研究「大數」。
我們不難發現,
若 A=a1*a2,
A除以q的餘數等於d
a1除以q的餘數等於d1
a2除以q的餘數等於d2;
則 d1*d2除以q的餘數等於d;(1)
證:
由小學二年級的除法知識可知:
∃x∈Z, s.t. A = x*q+d
∃x1∈Z, s.t. a1= x1*q+d1
∃x2∈Z, s.t. a2= x2*q+d2
∵ A=a1*a2
∴ A=( x1*q+d1 ) * ( x2*q+d2 )
=( x1*q+d1 ) * x2*q + x1*q*d2
+ d1*d2
∴ 顯然,A除以q的餘數
等於d1*d2除以q的餘數
#
因此,我們的任務就變成了適當地更好地分解10^32
一個很常見很容易想到的分解方法就是:
10^32=10^α*10^β
那麼,α,β分別是多少才是合適呢?
注意,這裡講的「合適」是指可以很好地簡便運算。
我們不難想到一點:
任意一個整數除以7,餘數無非就是0,1,2,3,4,5,6中的一個。
因此,如果我們可以找到一個α,使得10^α除以7的餘數是1的話,那麼我們的運算量將會減少很多很多。
我們不妨做出一些嘗試:
10^1除以7餘3
10^2除以7餘2
根據(1),不難得到以下結果:
10^3除以7餘6
10^4除以7餘4
10^5除以7餘5
10^6除以7餘1
再根據(1),不難得到以下結果:
10^6t 除以7餘1 (2)
也就是
10^6 除以7餘1
10^12 除以7餘1
10^18 除以7餘1
……
10^30 除以7餘1
再根據(1),及10^32=10^30*10^2
容易得到:
10^32除以7的餘數等於10^2除以7的餘數,即2.
所以這個問題就解決了。
題目再變一下😁😁:
問題4:
假如今天是星期一,明天是第一天,
請問10^(10^10)天后是星期幾?
由(1)(2)可知,接下來就是要算10^10除以6的餘數
我們依然像除以7的時候去嘗試:
10^1除以6餘4
10^2除以6餘4
根據(1),不難得到以下結果:
10^3除以6餘4
10^4除以6餘4
10^5除以6餘4
10^6除以6餘4
……
極易看出:
10^10除以6餘4
所以:10^10=6t+4
10^10^10=10^(6t+4)=10^6t * 10^4
由(1)(2),可知:
10^10^10除以7的餘數等於10^4除以7的餘數,即:4
所以,10^10^10後是星期五。