정보
이 스킬은 선형 합동식, 중국인의 나머지 정리 시스템, 모듈러 역원을 수동 방법과 계산적 접근법을 모두 사용하여 해결합니다. 큰 수의 모듈러 지수 연산, 순환군 연산, 이산 로그 맥락을 다룹니다. 암호학의 정수론 문제나 모듈러 계산이 필요한 알고리즘 문제를 다룰 때 사용하세요.
빠른 설치
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에서 이 명령을 복사하여 붙여넣어 스킬을 설치하세요
문서
Solve Modular Arithmetic
Resolver problemas de aritmética modular analizando sistemas de congruencias, aplicando el algoritmo euclidiano extendido para inversos, usando el Teorema Chino del Resto para congruencias simultáneas y aprovechando el teorema de Euler para exponenciación modular. Verificar cada solución por sustitución.
Cuándo Usar
- Resolver una congruencia lineal simple ax = b (mod m)
- Resolver un sistema de congruencias simultáneas (Teorema Chino del Resto)
- Calcular un inverso modular a^{-1} (mod m)
- Evaluar exponenciaciones modulares grandes a^k (mod m)
- Determinar el orden de un elemento en Z/mZ
- Trabajar con grupos cíclicos, raíces primitivas o contextos de logaritmo discreto
Entradas
- Requerido: La(s) congruencia(s) o ecuación modular a resolver
- Opcional: Si se deben mostrar los pasos del algoritmo euclidiano extendido explícitamente
- Opcional: Si se debe aplicar el teorema de Euler o el pequeño teorema de Fermat
- Opcional: Si se deben encontrar raíces primitivas u órdenes de elementos
- Opcional: Formato de salida (paso a paso, compacto o estilo demostración)
Procedimiento
Paso 1: Analizar el Sistema de Congruencias o Ecuación Modular
Extraer la estructura matemática del enunciado del problema.
-
Identificar el tipo:
- Congruencia lineal simple: ax = b (mod m)
- Sistema de congruencias: x = a1 (mod m1), x = a2 (mod m2), ...
- Exponenciación modular: a^k (mod m)
- Inverso modular: encontrar a^{-1} (mod m)
-
Normalizar: Reducir todos los coeficientes módulo sus respectivos módulos. Asegurar que a, b, m sean enteros no negativos con m > 0.
-
Registrar el problema analizado en notación estándar.
Esperado: Un problema modular claramente analizado y normalizado con todos los valores reducidos.
En caso de fallo: Si la notación es ambigua (ej., "resolver 3x + 5 = 2 mod 7" podría significar 3x + 5 = 2 (mod 7) o 3x + (5 = 2 mod 7)), aclarar con el usuario. Por defecto, interpretar mod como aplicándose a toda la ecuación.
Paso 2: Resolver una Congruencia Simple (si aplica)
Resolver ax = b (mod m) usando el algoritmo euclidiano extendido.
-
Calcular g = mcd(a, m) usando el algoritmo euclidiano:
- Aplicar división repetida: m = q1a + r1, a = q2r1 + r2, ... hasta que el residuo = 0.
- El último residuo no nulo es mcd(a, m).
-
Verificar solubilidad: ax = b (mod m) tiene solución si y solo si g | b.
- Si g no divide a b, la congruencia no tiene solución. Detenerse.
-
Reducir: Dividir entre g para obtener (a/g)x = (b/g) (mod m/g). Ahora mcd(a/g, m/g) = 1.
-
Encontrar el inverso modular de a/g módulo m/g usando el algoritmo euclidiano extendido:
- Retro-sustituir a través de los pasos del algoritmo euclidiano para expresar el mcd como combinación lineal: 1 = (a/g)*s + (m/g)*t.
- El coeficiente s (reducido mod m/g) es el inverso.
-
Calcular la solución particular: x0 = s * (b/g) mod (m/g).
-
Escribir la solución general: x = x0 + (m/g)*k para k = 0, 1, ..., g - 1 da todas las g soluciones incongruentes módulo m.
Ejemplo del algoritmo euclidiano extendido (encontrando 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).
Esperado: El conjunto completo de soluciones para la congruencia, o una demostración de que no existe solución.
En caso de fallo: Si la retro-sustitución del euclidiano extendido produce un resultado incorrecto, verificar cada paso de división. El error más común es un error de signo durante la retro-sustitución. Verificar: a * inverso mod m debe igualar 1.
Paso 3: Resolver un Sistema mediante el Teorema Chino del Resto (si aplica)
Resolver x = a1 (mod m1), x = a2 (mod m2), ..., x = ak (mod mk).
-
Verificar coprimalidad por pares: Para cada par (mi, mj), verificar mcd(mi, mj) = 1.
- Si todos los pares son coprimos, el TCR aplica directamente.
- Si algunos pares no son coprimos, verificar compatibilidad: para cada par no coprimo, verificar ai = aj (mod mcd(mi, mj)). Si son compatibles, reducir usando mcm. Si son incompatibles, no existe solución.
-
Calcular M = m1 * m2 * ... * mk (el producto de todos los módulos).
-
Para cada i, calcular Mi = M / mi (el producto de todos los módulos excepto mi).
-
Para cada i, encontrar yi = Mi^{-1} (mod mi) usando el algoritmo euclidiano extendido del Paso 2.
-
Calcular la solución: x = sum(ai * Mi * yi para i = 1..k) mod M.
-
Enunciar el resultado: x = [valor] (mod M). Esta es la solución única módulo M.
Referencia de totientes comunes:
| 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 |
Esperado: Una solución única módulo M, o una demostración de incompatibilidad.
En caso de fallo: Si el cálculo del TCR produce un resultado que no pasa la verificación, revisar los cálculos de inverso modular en el paso 4. Un error común es calcular Mi^{-1} mod M en lugar de Mi^{-1} mod mi. Cada inverso se calcula módulo el módulo individual, no el producto.
Paso 4: Aplicar el Teorema de Euler o el Pequeño Teorema de Fermat (si aplica)
Evaluar exponenciaciones modulares o simplificar expresiones usando el teorema de Euler.
-
Teorema de Euler: Si mcd(a, m) = 1, entonces a^{phi(m)} = 1 (mod m).
- Calcular phi(m) usando la fórmula del totiente: si m = p1^e1 * p2^e2 * ... * pk^ek, entonces phi(m) = m * producto((1 - 1/pi) para cada primo pi que divide a m).
-
Pequeño teorema de Fermat (caso especial): Si p es primo y mcd(a, p) = 1, entonces a^{p-1} = 1 (mod p).
-
Reducir el exponente: Para calcular a^k (mod m):
- Calcular r = k mod phi(m).
- Entonces a^k = a^r (mod m).
-
Calcular a^r (mod m) usando cuadratura repetida (exponenciación binaria):
- Escribir r en binario: r = b_n * 2^n + ... + b_1 * 2 + b_0.
- Comenzar con resultado = 1.
- Para cada bit del más significativo al menos: resultado = resultado^2 mod m; si el bit es 1, resultado = resultado * a mod m.
-
Manejar el caso mcd(a, m) > 1: El teorema de Euler no aplica directamente. Factorizar m y usar TCR para combinar resultados de módulos potencia de primos, usando elevación del exponente o cálculo directo.
Esperado: El valor de a^k (mod m), calculado mediante reducción de exponente y cuadratura repetida.
En caso de fallo: Si mcd(a, m) > 1 y el resultado parece incorrecto, no aplicar el teorema de Euler. En su lugar, calcular directamente o factorizar m en partes coprimas donde al menos algunas partes sean coprimas con a, resolver módulo cada parte y recombinar con TCR.
Paso 5: Verificar la Solución por Sustitución
Comprobar cada solución sustituyéndola en las ecuaciones originales.
-
Para congruencias simples: Calcular a * x mod m y verificar que iguala b.
-
Para sistemas TCR: Para cada congruencia x = ai (mod mi), verificar x mod mi = ai.
-
Para exponenciaciones modulares: Si es posible, verificar con un segundo método computacional (ej., cálculo directo para valores pequeños, o implementación independiente de cuadratura repetida).
-
Documentar la verificación explícitamente:
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.
Esperado: Todas las ecuaciones originales verificadas con cálculo explícito mostrado.
En caso de fallo: Si la verificación falla, rastrear el procedimiento hacia atrás para encontrar el error computacional. Fuentes comunes: errores aritméticos en el algoritmo euclidiano extendido, signo incorrecto en la retro-sustitución, u olvidar reducir módulo M en el paso final del TCR.
Validación
- El tipo de problema está correctamente identificado (congruencia simple, sistema, exponenciación, inverso)
- Todos los coeficientes están reducidos módulo sus respectivos módulos
- Para ax = b (mod m): mcd(a, m) | b se verifica antes de resolver
- La retro-sustitución del euclidiano extendido se verifica: a * inverso mod m = 1
- Para TCR: la coprimalidad por pares se verifica antes de aplicar el teorema
- Para TCR con módulos no coprimos: se verifica la compatibilidad
- El teorema de Euler se aplica solo cuando mcd(a, m) = 1
- El totiente phi(m) se calcula a partir de la factorización prima, no se adivina
- La cuadratura repetida usa reducción modular en cada paso (sin desbordamiento)
- Cada solución se verifica por sustitución en las ecuaciones originales
Errores Comunes
-
Aplicar TCR sin verificación de coprimalidad: La fórmula estándar del TCR requiere módulos coprimos por pares. Aplicarla a módulos no coprimos da una respuesta incorrecta, no un error. Siempre verificar mcd(mi, mj) = 1 primero.
-
Calcular el inverso incorrecto: Mi^{-1} debe calcularse módulo mi (el módulo individual), no módulo M (el producto). Este es el error de implementación del TCR más común.
-
Aplicar el teorema de Euler cuando mcd(a, m) > 1: a^{phi(m)} = 1 (mod m) requiere mcd(a, m) = 1. Si esto falla, el teorema no aplica y el resultado es incorrecto.
-
Errores de signo en la retro-sustitución del euclidiano extendido: Mantener un seguimiento cuidadoso de los signos en cada paso. El inverso final puede ser negativo; siempre reducir módulo m para obtener un representante positivo.
-
Desbordamiento en exponenciación modular: Incluso con cuadratura repetida, los productos intermedios pueden desbordar. Siempre reducir módulo m después de cada multiplicación, no solo al final.
-
Olvidar múltiples soluciones: ax = b (mod m) con g = mcd(a, m) > 1 y g | b tiene exactamente g soluciones incongruentes módulo m, no solo una.
Habilidades Relacionadas
analyze-prime-numbers-- la factorización prima es necesaria para calcular phi(m) y verificar coprimalidadexplore-diophantine-equations-- las ecuaciones diofánticas lineales ax + by = c son equivalentes a congruencias lineales ax = c (mod b)prove-geometric-theorem-- la aritmética modular aparece en demostraciones de constructibilidad (ej., qué n-gonos regulares son constructibles)
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 api.
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비트 옵티마이저를 가능하게 합니다.
