(13)冪模m與逐次平方法
逐次平方法
如何計算
呢?如果12830603是素數,你會設法使用費馬小定理,即使不是素數,也可以利用尤拉公式。事實上, 12 830 603 = 3571 ⋅ 3593 12\ 830\ 603=3571\cdot3593 12 830 603=3571⋅3593且
尤拉公式告訴我們,對任何a與m,若 g c d ( a , m ) = 1 gcd(a,m)=1 gcd(a,m)=1,則
所以可利用事實
來“簡化”我們的問題:
≡ 5 6 546 640 ( m o d 12 830 603 ) \equiv5^{6\ 546\ 640}(\mod 12\ 830\ 603) ≡56 546 640(mod12 830 603)
現在“只”需計算5的 6 546 640 6\ 546\ 640 6 546 640次冪,然後用模 12 930 603 12\ 930\ 603 12 930 603進行簡化。不幸的是,數 5 6 546 640 5^{6\ 546\ 640} 56 546 640有400多萬位數,即使用計算機計算也是很困難的。
用來計算 a k ( m o d m ) a^k(\mod m) ak(modm)的一個巧妙想法叫做逐次平分法。
逐次平分計算 a k ( m o d m ) a^k(\mod m) ak(modm)
1.將k表成2的冪次和:
其中每個 u i u_i ui是0或1。(這種表示式叫做k的二進位制展開。)
2.使用逐次平分法制作模m的a的冪次表。
a 2 ≡ ( a 1 ) 2 ≡ A 0 2 ≡ A 1 ( m o d m ) a^2\equiv (a^1)^2\equiv A_0^2\equiv A_1(\mod m) a2≡(a1)2≡A02≡A1(modm)
a 4 ≡ ( a 2 ) 2 ≡ A 1 2 ≡ A 2 ( m o d m ) a^4\equiv (a^2)^2\equiv A_1^2\equiv A_2(\mod m) a4≡(a2)2≡A12≡A2(modm)
a 8 ≡ ( a 4 ) 2 ≡ A 2 2 ≡ A 3 ( m o d m ) a^8\equiv (a^4)^2\equiv A_2^2\equiv A_3(\mod m) a8≡(a4)2≡A22≡A3(modm)
⋯ \cdots ⋯
a 2 r ≡ ( a 2 r − 1 ) 2 ≡ A r − 1 2 ≡ A r ( m o d m ) a^{2r}\equiv (a^{2r-1})^2\equiv A_{r-1}^2\equiv A_r(\mod m) a2r≡(a2r−1)2≡Ar−12≡Ar(modm)
注意要計算表的每一行,僅需要取前一行最末的數,平方它然後用模m簡化。也注意到表有 r + 1 r+1 r+1行,其中r是第1步中k的二進位制展開式中2的最高指數。
3.乘積
同餘於
a
k
(
m
o
d
m
)
a^k(\mod m)
ak(modm)。注意到所有
u
i
u_i
ui是0或1,因此這個數實際上是
u
i
u_i
ui等於1的那些
A
i
A_i
Ai的乘積。
證明
= a u 0 ⋅ ( a 2 ) u 1 ⋅ ( a 2 2 ) u 2 ⋯ ( a 2 r ) u r =a^{u_0}\cdot (a^2)^{u_1}\cdot (a^{2^2})^{u_2}\cdots(a^{2^r})^{u_r} =au0⋅(a2)u1⋅(a22)u2⋯(a2r)ur
= A 0 u 0 ⋅ A 1 u 1 ⋅ A 2 u 2 ⋯ A r u r ( m o d m ) =A_0^{u_0}\cdot A_1^{u_1}\cdot A_2^{u_2}\cdots A_r^{u_r}(\mod m) =A0u0⋅A1u1⋅A2u2⋯Arur(modm)
相關文章
- Raising Modulo (快速冪取模)AI
- 模冪運算-要求演算法返回冪運算a^b的計算結果與1337取模後的結果演算法
- 冪等方法的應用
- 數論模運算以及快速冪小解
- Apple M1 MacBook Pro與Intel MacBook Pro(13英寸)的區別APPMacIntel
- 13 英寸 MacBook Pro M1 2020 評測Mac
- gRPC重試與介面冪等性RPC
- SpringBoot系列——防重放與操作冪等Spring Boot
- 劉氏數列與等冪和
- 籃球模擬遊戲:NBA 2K23 for Mac(支援m1、13系統)中文版遊戲Mac
- 大規模向量檢索與量化方法
- HDU 4549 M斐波那契數列(矩陣快速冪+費馬小定理)矩陣
- 等冪和:常規與不常規(3)
- 等冪和:常規與不常規(2)
- 等冪和:常規與不常規(1)
- 跨平臺渲染引擎之路:框架與核心模組框架
- SLM——模擬過程與資料管理平臺
- 資料治理管理平臺功能模組與特性
- Java - 13 方法的遞迴Java遞迴
- M2 款 MacBook Pro 13 評測:GPU 效能提升最大MacGPU
- 【資料結構與演算法】快速冪資料結構演算法
- .NET平臺系列13 .NET5 統一平臺
- 力扣之 4 的冪 & 3 的冪 & 2 的冪(遞迴思想)力扣遞迴
- 快速冪
- 求冪
- 為什麼 HTTP PATCH 方法不是冪等的及其延伸HTTP
- 【freertos】002-posix模擬器設計與cortex m3異常處理
- VMware Fusion Pro啟用序列號 vm13中文下載「支援m1 m2」
- Nuke 13 for Mac(視訊後期合成軟體)支援m1Mac
- 常用介面分類與模組設計的方法
- 冪等設計:確保操作的安全與可靠
- 斐波那契數列數與等冪和
- POJ3087 Shuffle'm Up【簡單模擬】
- 13、BGP與BFD聯動
- 關於BGE-M3接入LangChain時遇到的問題與解決方法LangChain
- 快速檢視 Mac 應用程式是否與 M1相容的方法Mac
- 影視後期特效合成軟體:Nuke 13 for Mac(支援m1)特效Mac
- 13.第五章模態命題