solve-modular-arithmetic
关于
This skill solves modular arithmetic problems including linear congruences, systems via the Chinese Remainder Theorem, and modular inverses. It applies computational methods like the extended Euclidean algorithm and Euler's theorem for large modular exponentiations. Use it for tasks involving simultaneous congruences, cyclic groups, or discrete logarithm contexts.
快速安装
Claude Code
推荐npx skills add pjt222/agent-almanac -a claude-code/plugin add https://github.com/pjt222/agent-almanacgit clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/solve-modular-arithmetic在 Claude Code 中复制并粘贴此命令以安装该技能
技能文档
解模算術
解模算術問題:解析同餘系統、套用擴展歐幾里得演算法求逆、用中國剩餘定理解同時同餘、藉歐拉定理進行模指數運算。每解皆以代回驗證。
適用時機
- 解單一線性同餘 ax = b (mod m)
- 解同時同餘系統(中國剩餘定理)
- 計算模逆元 a^{-1} (mod m)
- 求大數模指數 a^k (mod m)
- 確定 Z/mZ 中元素之階
- 用於循環群、原根或離散對數情境
輸入
- 必要:待解之同餘式或模方程
- 選擇性:是否明示擴展歐幾里得演算步驟
- 選擇性:是否套用歐拉定理或費馬小定理
- 選擇性:是否求原根或元素階
- 選擇性:輸出格式(逐步、緊湊或證明式)
步驟
步驟一:解析同餘系統或模方程
從問題敘述中萃取數學結構。
-
識別類型:
- 單一線性同餘:ax = b (mod m)
- 同餘系統:x = a1 (mod m1)、x = a2 (mod m2)、...
- 模指數:a^k (mod m)
- 模逆:求 a^{-1} (mod m)
-
正規化:將所有係數對其各自之模化簡。確保 a、b、m 為非負整數且 m > 0。
-
以標準記法記下解析後之問題。
預期: 清晰解析且正規化之模問題,所有值已化簡。
失敗時: 若記法有歧義(如「solve 3x + 5 = 2 mod 7」可指 3x + 5 = 2 (mod 7) 或 3x + (5 = 2 mod 7)),與用戶澄清。預設將 mod 解為作用於整個方程。
步驟二:解單一同餘(如適用)
以擴展歐幾里得演算法解 ax = b (mod m)。
-
計算 g = gcd(a, m) 用歐幾里得演算法:
- 反覆做除法:m = q1a + r1、a = q2r1 + r2、... 直至餘為 0。
- 最後非零之餘即 gcd(a, m)。
-
檢查可解性:ax = b (mod m) 有解當且僅當 g | b。
- 若 g 不整除 b,則同餘無解。停止。
-
化簡:兩邊同除以 g 得 (a/g)x = (b/g) (mod m/g)。此時 gcd(a/g, m/g) = 1。
-
求 a/g 對 m/g 之模逆 用擴展歐幾里得演算法:
- 自歐幾里得演算法步驟回代,將 gcd 表為線性組合:1 = (a/g)*s + (m/g)*t。
- 係數 s(對 m/g 化簡)即逆。
-
計算特解:x0 = s * (b/g) mod (m/g)。
-
寫一般解:x = x0 + (m/g)*k,k = 0, 1, ..., g - 1,給出對 m 之全部 g 個不同餘解。
擴展歐幾里得演算法範例(求 17^{-1} mod 43):
43 = 2*17 + 9
17 = 1*9 + 8
9 = 1*8 + 1
8 = 8*1 + 0
Back-substitute:
1 = 9 - 1*8
= 9 - 1*(17 - 1*9) = 2*9 - 17
= 2*(43 - 2*17) - 17 = 2*43 - 5*17
So 17*(-5) = 1 (mod 43), i.e., 17^{-1} = -5 = 38 (mod 43).
預期: 同餘之完整解集,或無解之證明。
失敗時: 若擴展歐幾里得回代產生錯結果,驗每除法步驟。最常見錯為回代時之符號錯。檢:a * inverse mod m 應等 1。
步驟三:以中國剩餘定理解系統(如適用)
解 x = a1 (mod m1)、x = a2 (mod m2)、...、x = ak (mod mk)。
-
檢查兩兩互質:對每對 (mi, mj),驗 gcd(mi, mj) = 1。
- 若所有對皆互質,CRT 直接適用。
- 若某些對不互質,檢相容性:對每非互質對,驗 ai = aj (mod gcd(mi, mj))。若相容,以 lcm 化簡。若不相容,無解。
-
計算 M = m1 * m2 * ... * mk(所有模之積)。
-
對每 i 計算 Mi = M / mi(除 mi 外所有模之積)。
-
對每 i 求 yi = Mi^{-1} (mod mi) 用步驟二之擴展歐幾里得演算法。
-
計算解:x = sum(ai * Mi * yi for i = 1..k) mod M。
-
陳述結果:x = [value] (mod M)。此為對 M 之唯一解。
常見歐拉函數對照:
| n | phi(n) | n | phi(n) | n | phi(n) |
|---|---|---|---|---|---|
| 2 | 1 | 10 | 4 | 20 | 8 |
| 3 | 2 | 11 | 10 | 24 | 8 |
| 4 | 2 | 12 | 4 | 25 | 20 |
| 5 | 4 | 13 | 12 | 30 | 8 |
| 6 | 2 | 14 | 6 | 36 | 12 |
| 7 | 6 | 15 | 8 | 48 | 16 |
| 8 | 4 | 16 | 8 | 60 | 16 |
| 9 | 6 | 18 | 6 | 100 | 40 |
預期: 對 M 之唯一解,或不相容之證明。
失敗時: 若 CRT 計算所得結果未通過驗證,檢步驟四之模逆計算。常見錯為計算 Mi^{-1} mod M 而非 Mi^{-1} mod mi。每逆是對個別模而非積計算。
步驟四:套用歐拉定理或費馬小定理(如適用)
評估模指數或用歐拉定理化簡表達式。
-
歐拉定理:若 gcd(a, m) = 1,則 a^{phi(m)} = 1 (mod m)。
- 用歐拉函數公式計 phi(m):若 m = p1^e1 * p2^e2 * ... * pk^ek,則 phi(m) = m * product((1 - 1/pi) for each prime pi dividing m)。
-
費馬小定理(特例):若 p 為質數且 gcd(a, p) = 1,則 a^{p-1} = 1 (mod p)。
-
化簡指數:欲計 a^k (mod m):
- 計 r = k mod phi(m)。
- 則 a^k = a^r (mod m)。
-
以反覆平方(二進位指數)計 a^r (mod m):
- 將 r 寫為二進位:r = b_n * 2^n + ... + b_1 * 2 + b_0。
- 自 result = 1 起。
- 對自最高位至最低位之每位:result = result^2 mod m;若位為 1,則 result = result * a mod m。
-
處理 gcd(a, m) > 1 之情況:歐拉定理不直接適用。將 m 分解並用 CRT 結合質數冪模之結果,用提升指數法或直接計算。
預期: a^k (mod m) 之值,經指數化簡與反覆平方計算所得。
失敗時: 若 gcd(a, m) > 1 且結果似錯,勿套歐拉定理。改直接計算或將 m 分解為互質部分(其中至少一些部分與 a 互質),對每部分解之,再以 CRT 重組。
步驟五:以代回驗證解
將每解代入原方程驗證。
-
對單一同餘:計 a * x mod m 並驗其等 b。
-
對 CRT 系統:對每同餘 x = ai (mod mi),驗 x mod mi = ai。
-
對模指數:如可能,以第二種計算方法驗證(如對小值直接計算,或獨立之反覆平方實作)。
-
明示驗證之記錄:
Solution: x = 23
Check 1: 23 mod 3 = 2 = a1. Correct.
Check 2: 23 mod 5 = 3 = a2. Correct.
Check 3: 23 mod 7 = 2 = a3. Correct.
All congruences satisfied.
預期: 所有原方程已以明示計算驗證。
失敗時: 若驗證失敗,回追過程以尋計算錯。常見來源:擴展歐幾里得演算法之算術錯、回代之符號錯,或最終 CRT 步驟漏對 M 化簡。
驗證
- 問題類型已正確識別(單一同餘、系統、指數、逆)
- 所有係數已對其各自模化簡
- 對 ax = b (mod m):解前已檢 gcd(a, m) | b
- 擴展歐幾里得回代已驗:a * inverse mod m = 1
- 對 CRT:套用前已驗兩兩互質
- 對模不互質之 CRT:已檢相容性
- 僅當 gcd(a, m) = 1 時套歐拉定理
- 歐拉函數 phi(m) 自質因數分解計算,非猜
- 反覆平方於每步皆模化簡(無溢位)
- 每解皆以代回原方程驗證
常見陷阱
-
未檢互質而套 CRT:標準 CRT 公式需兩兩互質之模。對非互質模套之給出錯答而非錯誤。永遠先檢 gcd(mi, mj) = 1。
-
計算錯逆:Mi^{-1} 須對 mi(個別模)而非對 M(積)計算。為單一最常見之 CRT 實作錯。
-
gcd(a, m) > 1 時套歐拉定理:a^{phi(m)} = 1 (mod m) 需 gcd(a, m) = 1。若此不成立,定理不適用且結果為錯。
-
擴展歐幾里得回代之符號錯:每步皆細追符號。最終逆可能為負;永遠對 m 化簡得正代表。
-
模指數之溢位:即使用反覆平方,中間積亦可能溢位。永遠於每次乘後對 m 化簡,非僅於末端。
-
遺忘多解:ax = b (mod m) 中 g = gcd(a, m) > 1 且 g | b 時,對 m 恰有 g 個不同餘解,非僅一。
相關技能
analyze-prime-numbers— 質因數分解為計 phi(m) 與驗互質所需explore-diophantine-equations— 線性 Diophantine 方程 ax + by = c 等價於線性同餘 ax = c (mod b)prove-geometric-theorem— 模算術現於可構造性證明(如哪些正 n 邊形可構造)
GitHub 仓库
相关推荐技能
llamaguard
其他LlamaGuard是Meta推出的7-8B参数内容审核模型,专门用于过滤LLM的输入和输出内容。它能检测六大安全风险类别(暴力/仇恨、性内容、武器、违禁品、自残、犯罪计划),准确率达94-95%。开发者可通过HuggingFace、vLLM或Sagemaker快速部署,并能与NeMo Guardrails集成实现自动化安全防护。
cost-optimization
其他这个Claude Skill帮助开发者优化云成本,通过资源调整、标记策略和预留实例来降低AWS、Azure和GCP的开支。它适用于减少云支出、分析基础设施成本或实施成本治理策略的场景。关键功能包括提供成本可视化、资源规模调整指导和定价模型优化建议。
quantizing-models-bitsandbytes
其他这个Skill使用bitsandbytes库量化大语言模型,能在GPU内存有限时通过8位或4位量化减少50-75%内存占用,同时保持精度损失最小。它支持INT8、NF4、FP4等多种量化格式,可与HuggingFace Transformers无缝集成,适用于需要部署更大模型或加速推理的场景。还提供QLoRA训练和8位优化器支持,让开发者能轻松实现高效模型压缩。
dispatching-parallel-agents
其他该Skill用于并行处理3个以上无依赖关系的独立故障,可为每个问题域分派专属Claude代理同时执行调查修复。它通过并发处理多个独立问题显著提升故障排查效率,特别适用于测试文件、子系统等无共享状态的场景。
