2的正幂末尾数的模式

2的正幂 — 2, 4, 8, 16, 32, 64, 128, 256, … — 末尾数字遵循一个显而易见的规律: 2, 4, 8, 6, 2, 4, 8, 6, … . 这4个数字永远循环下去。最末尾数以外还有循环 — 实际上是最末m位 — 从2m 开始的2的幂。例如,从04开始最末两位数就存在一个长度20的循环,同时从008开始最末3位数就存在一个长度100的循环。

本文,我将告诉你为什么会有这些循环,它们有多长,如何表达为数学形式,如何看见它们。

最末尾数的循环

末位数-所在位置-是十进制整数d在d/10后的余数。等价地,末位数是d mod 10的结果,根据约定取最小非负值-普通余数-作为返回结果。模运算,持续叠加到2的幂运算,得到末位数的循环:

  1. \mbox{\footnotesize{\displaystyle{2^1 \equiv \textbf{2} \pmod{10}}}}
  2. \mbox{\footnotesize{\displaystyle{2^2 \equiv 2^1 \cdot 2 \equiv 2 \cdot 2 \equiv \textbf{4} \pmod{10}}}}
  3. \mbox{\footnotesize{\displaystyle{2^3 \equiv 2^2 \cdot 2 \equiv 4 \cdot 2 \equiv \textbf{8} \pmod{10}}}}
  4. \mbox{\footnotesize{\displaystyle{2^4 \equiv 2^3 \cdot 2 \equiv 8 \cdot 2 \equiv \textbf{6} \pmod{10}}}}
  5. \mbox{\footnotesize{\displaystyle{2^5 \equiv 2^4 \cdot 2 \equiv 6 \cdot 2 \equiv \textbf{2} \pmod{10}}}}
  6. \mbox{\footnotesize{\displaystyle{2^6 \equiv 2^5 \cdot 2 \equiv 2 \cdot 2 \equiv \textbf{4} \pmod{10}}}}

我们从2开始,取10的模,再乘以2,再对10取模,等等。可知此模式将循环,直到先前的一个结果-2再次出现在第五步-循环确认。这展现了数字 2n, n ≥ 1, 末位数在四个数字 2, 4, 8, 和 6间循环。

这循环告诉我们,末尾数相同的2的幂是有关联的,它们的指数相差4:

  • Ends in 2: 21, 25, 29, 213, 217, … .
  • Ends in 4: 22, 26, 210, 214, 218, … .
  • Ends in 8: 23, 27, 211, 215, 219, … .
  • Ends in 6: 24, 28, 212, 216, 220, … .

你可以使用指数运算规则来更简洁地描述,展示所有2的幂中末位数有规律的前4个:

  • Ends in 2: 21·24k, or 21+4k, k ≥ 0.
  • Ends in 4: 22·24k, or 22+4k, k ≥ 0.
  • Ends in 8: 23·24k, or 23+4k, k ≥ 0.
  • Ends in 6: 24·24k, or 24+4k, k ≥ 0.

也可以按照指数对4取模的结果来对2的幂建立联系:

  • Ends in 2: \mbox{\footnotesize{\displaystyle{n \equiv 1 \pmod{4}}}}
  • Ends in 4: \mbox{\footnotesize{\displaystyle{n \equiv 2 \pmod{4}}}}
  • Ends in 8: \mbox{\footnotesize{\displaystyle{n \equiv 3 \pmod{4}}}}
  • Ends in 6: \mbox{\footnotesize{\displaystyle{n \equiv 0 \pmod{4}}}}

这就很容易知道任意2的正幂的末位数是几。例如, 2319 的末位数是 8, 因为 \mbox{\footnotesize{\displaystyle{319 \equiv 3 \pmod{4}}}}.

Cycle in the Last Digit of 2n, n≥1
Power of Two (k ≥ 0)Exponent (mod 4)Last Digit
21+4k12
22+4k24
23+4k38
24+4k06

小结,表格告诉我们,如果 \mbox{\footnotesize{\displaystyle{x \equiv y \pmod{4}}}}, \mbox{\footnotesize{\displaystyle{2^x \equiv 2^y \pmod{10}}}}.

末两位数的循环

类似的分析,只是对100取模,展示2的幂的末两位数,从 22 开始,循环周期是20:

Cycle in the Last Two Digits of 2n, n≥2
Power of Two (k ≥ 0)Exponent (mod 20)Last 2 Digits
22+20k204
23+20k308
24+20k416
25+20k532
26+20k664
27+20k728
28+20k856
29+20k912
210+20k1024
211+20k1148
212+20k1296
213+20k1392
214+20k1484
215+20k1568
216+20k1636
217+20k1772
218+20k1844
219+20k1988
220+20k076
221+20k152

末三位的循环

为了找出末三位数的循环,重复上面的过程,对1000取模。下面展示了2的幂的末三位,从 23开始,循环周期是100:

Cycle in the Last Three Digits of 2n, n≥3
Power of Two (k ≥ 0)Exponent (mod 100)Last 3 Digits
23+100k3008
24+100k4016
25+100k5032
26+100k6064
27+100k7128
28+100k8256
29+100k9512
210+100k10024
211+100k11048
212+100k12096
213+100k13192
214+100k14384
215+100k15768
216+100k16536
217+100k17072
218+100k18144
219+100k19288
220+100k20576
221+100k21152
222+100k22304
223+100k23608
224+100k24216
225+100k25432
226+100k26864
227+100k27728
228+100k28456
229+100k29912
230+100k30824
231+100k31648
232+100k32296
233+100k33592
234+100k34184
235+100k35368
236+100k36736
237+100k37472
238+100k38944
239+100k39888
240+100k40776
241+100k41552
242+100k42104
243+100k43208
244+100k44416
245+100k45832
246+100k46664
247+100k47328
248+100k48656
249+100k49312
250+100k50624
251+100k51248
252+100k52496
253+100k53992
254+100k54984
255+100k55968
256+100k56936
257+100k57872
258+100k58744
259+100k59488
260+100k60976
261+100k61952
262+100k62904
263+100k63808
264+100k64616
265+100k65232
266+100k66464
267+100k67928
268+100k68856
269+100k69712
270+100k70424
271+100k71848
272+100k72696
273+100k73392
274+100k74784
275+100k75568
276+100k76136
277+100k77272
278+100k78544
279+100k79088
280+100k80176
281+100k81352
282+100k82704
283+100k83408
284+100k84816
285+100k85632
286+100k86264
287+100k87528
288+100k88056
289+100k89112
290+100k90224
291+100k91448
292+100k92896
293+100k93792
294+100k94584
295+100k95168
296+100k96336
297+100k97672
298+100k98344
299+100k99688
2100+100k0376
2101+100k1752
2102+100k2504

末m位数循环

2的正幂的末m位数循环要对10m取模,循环周期是 4·5m-1, 始于 2m. (具体证明涉及到数论,超出了本文的范围)

Cycle Length for Number of Ending Digits (1 to 10)
mPeriod (4·5m-1)Starts with
1421
22022
310023
450024
5250025
61250026
76250027
831250028
9156250029
107812500210

周期增长飞快-指数级增长-所以无法列出m大于3的列表。

循环的嵌套(Nesting of Cycles)

对于末m位,m-1位,m-2位, …, 末1位的循环,可以看做是嵌套的,尽管它们的起始点是交错的。你只需将较小的起始数补零,就能让它们对齐。

例如,在长度是100的末三位循环中,包含了5次长度是20的末两位循环;每一个长度是20的末两位循环包含5次长度为4的最末位循环。你从8(需移动两位)开始观察就能发现最末位的规律,末两位的规律始于08(需移动一位),末三位的规律始于008(不需移位)。

下表标出了嵌套的循环(全部100行都被标记,因为只有100个2的幂-末三位的一个循环-被列出)。

Nested 1-3 Digit Ending Patterns in Powers of Two from 2^3 to 2^102

Nested 1-3 Digit Ending Patterns From 23 to 2102

使用PARI/GP探索末位循环

我使用PARI/GP 来进行上面的计算和验证。下面是三个例子:

  • 列出前20个末位是2的2的幂:
    ? for (i=0,19,print("2^",1+4*i,": ",2^(1+4*i)))
    2^1: 2
    2^5: 32
    2^9: 512
    2^13: 8192
    2^17: 131072
    2^21: 2097152
    2^25: 33554432
    2^29: 536870912
    2^33: 8589934592
    2^37: 137438953472
    2^41: 2199023255552
    2^45: 35184372088832
    2^49: 562949953421312
    2^53: 9007199254740992
    2^57: 144115188075855872
    2^61: 2305843009213693952
    2^65: 36893488147419103232
    2^69: 590295810358705651712
    2^73: 9444732965739290427392
    2^77: 151115727451828646838272
    
  • 列出末两位的循环( ‘%’ 号返回余数,等价于取模运算):
    ? for (i=2,21,print("2^",i," mod(100): ",2^i % 100))
    2^2 mod(100): 4
    2^3 mod(100): 8
    2^4 mod(100): 16
    2^5 mod(100): 32
    2^6 mod(100): 64
    2^7 mod(100): 28
    2^8 mod(100): 56
    2^9 mod(100): 12
    2^10 mod(100): 24
    2^11 mod(100): 48
    2^12 mod(100): 96
    2^13 mod(100): 92
    2^14 mod(100): 84
    2^15 mod(100): 68
    2^16 mod(100): 36
    2^17 mod(100): 72
    2^18 mod(100): 44
    2^19 mod(100): 88
    2^20 mod(100): 76
    2^21 mod(100): 52
    

    (单位的数字这里没有前补零)

  • 打印末位1到10位数的周期长度:
    ? for (i=1,10,print(i,": ",4*5^(i-1)))
    1: 4
    2: 20
    3: 100
    4: 500
    5: 2500
    6: 12500
    7: 62500
    8: 312500
    9: 1562500
    10: 7812500
    

转载于:https://www.cnblogs.com/sirlipeng/p/5391096.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值