정보
이 스킬은 선형 합동식, 중국 나머지 정리를 이용한 연립 방정식, 모듈러 역원을 포함한 모듈러 연산 문제를 해결합니다. 확장 유클리드 알고리즘과 큰 수의 모듈러 지수 연산을 위한 오일러 정리 같은 계산 방법을 적용합니다. 동시 합동식, 순환군, 이산 로그 관련 작업에 사용하세요.
빠른 설치
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-arithmeticClaude 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 저장소
Frequently asked questions
What is the solve-modular-arithmetic skill?
solve-modular-arithmetic is a Claude Skill by pjt222. Skills package instructions and resources that Claude loads on demand, so Claude can perform solve-modular-arithmetic-related tasks without extra prompting.
How do I install solve-modular-arithmetic?
Use the install commands on this page: add solve-modular-arithmetic to Claude Code as a plugin, or clone its repository into your skills directory, then restart Claude so it picks up the skill.
What category does solve-modular-arithmetic belong to?
solve-modular-arithmetic is in the Other category, tagged ai.
Is solve-modular-arithmetic free to use?
Yes. solve-modular-arithmetic is listed on AIMCP and free to install. It runs inside Claude, so no separate service account is required to use the skill itself.
연관 스킬
LlamaGuard는 폭력 및 혐오 발언 등 6가지 안전 범주에서 LLM 입력과 출력을 조정하기 위한 Meta의 70-80억 파라미터 모델입니다. 94-95% 정확도를 제공하며 vLLM, Hugging Face 또는 Amazon SageMaker를 사용해 배포할 수 있습니다. 이 기술을 사용하여 AI 애플리케이션에 콘텐츠 필터링 및 안전 가드레일을 손쉽게 통합하세요.
이 Claude Skill은 리소스 적정화, 태깅 전략, 지출 분석을 통해 개발자들이 클라우드 비용을 최적화할 수 있도록 지원합니다. AWS, Azure, GCP에서 클라우드 비용을 절감하고 비용 거버넌스를 구현하기 위한 프레임워크를 제공합니다. 인프라 비용을 분석하거나, 리소스를 적정화하거나, 예산 제약을 충족해야 할 때 사용하세요.
이 Claude Skill은 스프레드, 오버/언더, 프로프 베트를 포함한 스포츠 베팅 시장을 분석합니다. 역사적 추이와 상황별 통계를 검토하여 가치 베트를 발견하고, 교육적 목적으로 실행 가능한 권장 사항이 담긴 구조화된 마크다운 결과를 제공합니다. 개발자는 이 기능을 스포츠 베팅 분석 도구에 활용할 수 있으며, 단순히 엔터테인먼트/교육 목적으로만 설계되었음을 유의해야 합니다.
이 스킬은 bitsandbytes를 사용하여 LLM을 8비트 또는 4비트 정밀도로 양자화하며, 최소한의 정확도 손실로 50-75%의 메모리 감소를 달성합니다. 제한된 GPU 메모리에서 더 큰 모델을 실행하거나 추론을 가속화하는 데 이상적이며, INT8, NF4, FP4와 같은 형식을 지원합니다. 이 스킬은 HuggingFace Transformers와 통합되어 QLoRA 학습 및 8비트 옵티마이저를 가능하게 합니다.
