Pequeño teorema de Fermat
Indique una base y un módulo y vea si a^(n−1) mod n da 1: con 2 y 7, el resto de 2^6 es 1; con 2 y 15, es 4. Le sirve para revisar deberes o detectar un contraejemplo compuesto. Gratis en su navegador.
- Gratis
- Funciona en su navegador
- Sin registro
- Sus datos no salen de su equipo
Ejecutar — gratis
Ejemplo resuelto
- A
- 2
- N
- 7
- Resultado
- 1
- Primer texto
- 2
- N
- 7
- Exponente
- 6
El pequeño teorema de Fermat es la afirmación limpia de la aritmética modular: si n es primo y la base a no es divisible por n, entonces a elevado a n menos uno es congruente con uno módulo n. Estudiantes, tutores y desarrolladores necesitan evaluar con rapidez ese residuo de potencia exacto—no un resumen del demostración—para revisar deberes, probar contraejemplos compuestos o validar rutinas modulares. Este comprobador del pequeño teorema de Fermat recibe los enteros a y n, rechaza el par cuando gcd(a, n) no es uno y, en caso contrario, devuelve a^(n−1) mod n con un indicador booleano que le indica si el resto es uno.
Qué afirma el pequeño teorema de Fermat y qué calcula esta herramienta
En su forma habitual de libro de texto, el pequeño teorema de Fermat dice: si n es un número primo y a es un entero no divisible por n, entonces a elevado a n menos uno es congruente con uno módulo n. Escrito con el operador modular que los programadores usan a diario, eso es a^(n−1) mod n igual a 1 siempre que se cumplan esas hipótesis. Usted aporta la base a y el módulo n.
El comprobador exige primero que n sea un entero al menos igual a dos, porque la reducción modular con módulo inferior a dos no es un contrato útil en el aula. Luego exige que el máximo común divisor de a y n sea uno—la hipótesis de coprimalidad que coincide con el enunciado clásico cuando n es primo (a no divisible por n) y sigue teniendo sentido con n compuesto cuando desea explorar qué ocurre fuera de la garantía del teorema.
Cuando ambas comprobaciones pasan, el motor ejecuta exponenciación modular binaria (cuadrar y multiplicar) sobre BigInt para que los productos intermedios sigan exactos aunque el exponente n−1 sea grande.
Para clase, deberes y contraejemplos compuestos
Los docentes usan un comprobador del pequeño teorema de Fermat para que el alumnado verifique cálculos a mano de a^(p−1) mod p con primos pequeños antes de redactar una demostración, y para que pruebe a propósito n compuestos y vea que el resto no siempre es uno. Los generadores de exámenes y los complementos LMS necesitan un oráculo determinista que rechace entradas no coprimas en lugar de devolver en silencio un resto que confunda al corrector.
Los cuadernos de cursos de criptografía a menudo necesitan un único paso exacto de potencia modular al introducir claves RSA de juguete o al ilustrar por qué aparece el exponente n−1 en la teoría de números elemental antes de que el teorema de Euler generalice el relato con φ(n).
Cuando más adelante necesite el teorema de Euler con φ(n), inversas modulares o descomposiciones por el teorema chino del resto, llame a esas capacidades por separado; esta permanece como la landing dedicada a Fermat a^(n−1) mod n para que la intención de búsqueda y la forma de la respuesta sigan claras.
Qué puede hacer con ella
Comprobaciones FLT de deberes y aula
El alumnado introduce la base a y un primo n para confirmar que a^(n−1) mod n vale 1, o prueba n compuestos para ver cuándo el resto no es 1.
Oráculos de autoevaluación LMS y exámenes
Califique ítems de aritmética modular con un resto determinista y rechace pares no coprimos como inválidos en lugar de inventar una carga de éxito.
Preguntas frecuentes
¿Por qué debe ser gcd(a, n) igual a 1?
El pequeño teorema de Fermat se enuncia para bases coprimas al módulo (equivalente a no divisibles por el primo n).
¿Un resultado de 1 demuestra que n es primo?
No. Cuando n es primo y gcd(a,n)=1 el resto es siempre 1, pero los compuestos también pueden dar 1 para algunas bases. Use una herramienta dedicada de primalidad para esa pregunta.
¿Cómo compruebo el pequeño teorema de Fermat con base 2 y módulo 7?
Escriba 2 como base y 7 como módulo. La herramienta eleva 2 a la sexta potencia, divide entre 7 y devuelve un resto de 1: el teorema se cumple para este primo, tal como se espera.
¿Por qué 2^14 mod 15 da 4 y no 1?
Porque 15 no es primo y en ese caso el teorema no garantiza nada. La base 2 no comparte divisores con 15, así que la herramienta calcula el resto de 2 elevado a 14 y obtiene 4: el 15 no supera la prueba.
¿Puedo usar una base negativa o un módulo muy grande?
Sí. Una base negativa se reduce primero módulo n, y el módulo solo tiene que ser un entero de al menos 2. La potencia se calcula elevando al cuadrado y multiplicando con números enteros exactos, así que incluso con exponentes enormes el resto es exacto.
Herramientas relacionadas
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, por email y desde Telegram — y pronto también desde nuestra app.
Llámela desde su stack
curl -X POST https://api.kit.forhosting.com/numth/fermat-little-check \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"a":2,"n":7}'const res = await fetch("https://api.kit.forhosting.com/numth/fermat-little-check", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"a": 2,
"n": 7
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/numth/fermat-little-check",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"a": 2,
"n": 7
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/numth/fermat-little-check", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"a":2,"n":7}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"a":2,"n":7}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/numth/fermat-little-check", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Ejemplo de solicitud
{
"a": 2,
"n": 7
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "numth.fermat_little_check",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |
Notas técnicas
La misma lógica pura BigInt alimenta la herramienta gratuita del navegador y la vía de API de pago a $0.002 por petición correcta, de modo que las demos de clase y los scripts de producción nunca discrepan sobre un residuo.
Qué afirma el pequeño teorema de Fermat y qué calcula esta herramienta
La demostración no es el producto de este endpoint; el producto es el resto exacto de esa potencia. La respuesta repite a y n como cadenas decimales, informa el exponente n−1, el resto no negativo result, gcd como la cadena "1", un booleano congruent_to_one que es verdadero exactamente cuando result vale 1, y una expresión breve que puede imprimir junto a la respuesta. Comprobación clásica con primo: a igual a 2 y n igual a 7 da 2^6 mod 7 igual a 1, así que congruent_to_one es verdadero. Sonda clásica con compuesto: a igual a 2 y n igual a 15 da 2^14 mod 15 igual a 4, así que congruent_to_one es falso—precisamente el tipo de contraejemplo que muestra que a^(n−1) ≡ 1 no es, por sí solo, un certificado de primalidad.
Contrato de entrada, errores y cómo leer la respuesta
Si n es menor que dos, la tarea falla con un mensaje que indica que el módulo debe ser al menos dos. Si gcd(a, n) no es uno, la tarea falla con un mensaje que nombra el gcd—por ejemplo gcd(2, 4) igual a 2—para que quien llama sepa que el par queda fuera de la hipótesis de coprimalidad en lugar de adivinar por qué no se calculó la potencia. Se aceptan bases negativas y se reducen al sistema de residuos no negativos módulo n antes de elevar, lo que coincide con la aritmética modular estándar. Envíe un cuerpo JSON con POST y dos campos enteros obligatorios: a (alias base) y n (alias modulus, mod). Cada campo puede ser un número JSON o una cadena de entero decimal; se prefiere la forma cadena cuando los valores salen del rango de enteros seguros de JavaScript. Fracciones, cadenas vacías, tokens no numéricos y valores de más de sesenta y cuatro dígitos decimales fallan con invalid_input y no se facturan. En caso de éxito, todo campo numérico del cuerpo es una cadena decimal salvo congruent_to_one, que es booleano, de modo que los enteros grandes van y vuelven por JSON sin pérdida de precisión. Combine este comprobador con una herramienta aparte de factorización o primalidad cuando su flujo necesite más que el residuo de potencia; este endpoint responde solo a^(n−1) mod n bajo la puerta de coprimalidad para que la intención SEO se mantenga clara y la respuesta minimal. El precio es un $0.002 fijo por petición correcta en la unidad item; la validación fallida no consume saldo prepago.
Demos de aula, sondas con compuestos y automatización por API
Los desarrolladores conectan la API a pruebas de propiedades que afirman a^(n−1) ≡ 1 para bases aleatorias coprimas a un módulo primo conocido, o a suites de regresión que fijan contraejemplos compuestos conocidos como 2^14 mod 15 igual a 4. Mantenga a y n dentro del límite de dígitos publicado, fije en sus pruebas el result en forma de cadena y el indicador congruent_to_one, y obtendrá residuos reproducibles para deberes, plataformas de tutoría y edge workers sin montar un sistema completo de álgebra computacional.
Casos de integración
Pruebas unitarias de potencia modular
Los scripts fijan residuos conocidos como 2^6 mod 7 = 1 y 2^14 mod 15 = 4 sin reimplementar BigInt square-and-multiply en cada lenguaje.
Preguntas técnicas
¿Qué calcula este comprobador del pequeño teorema de Fermat?
Dados enteros a y n con n ≥ 2 y gcd(a,n)=1, devuelve a^(n−1) mod n y si ese resto vale 1 (congruent_to_one).
¿Qué ocurre si n es compuesto?
El comprobador sigue calculando a^(n−1) mod n cuando gcd(a,n)=1. congruent_to_one puede ser verdadero o falso; los casos falsos son contraejemplos útiles en clase.
¿Cuánto cuesta el comprobador del pequeño teorema de Fermat?
La herramienta del navegador es gratuita. Las peticiones API usan saldo prepago KIT a $0.002 por llamada correcta; la entrada inválida no se cobra.