Comprobador primos de Wieferich
El 1093 es un primo de Wieferich: 2 elevado a 1092 deja resto 1 al dividirlo entre 1093², que es 1194649. Escriba un primo y verá ese resto y si se cumple esta condición tan poco frecuente. Gratis en su navegador.
- Gratis
- Funciona en su navegador
- Sin registro
- Sus datos no salen de su equipo
Ejecutar — gratis
Ejemplo resuelto
- Potencia (W)
- 1 093
- p al cuadrado
- 1194649
- Resto
- 1
- Expresión
- 2^{1092} ≡ 1 (mod 1194649)
Un primo de Wieferich es un número primo p para el cual dos elevado a p menos uno deja resto uno al dividir por p al cuadrado. Esa congruencia refuerza el enunciado habitual del pequeño teorema de Fermat (dos a la p menos uno es uno módulo p) y aparece en el estudio del último teorema de Fermat en el primer caso, lemas de elevación del exponente y restricciones sobre números perfectos impares. Solo se conocen dos de esos primos—1093 y 3511—de modo que la mayoría de los primos cotidianos fallan la prueba. Este comprobador acepta un único primo p, verifica la primalidad, calcula la potencia modular exacta con aritmética BigInt determinista y devuelve si el resto es uno junto con p al cuadrado y una cadena de congruencia breve.
Qué es un primo de Wieferich y por qué el módulo es p al cuadrado
El pequeño teorema de Fermat afirma que si p es primo y no divide a la base a, entonces a elevado a p menos uno es congruente con uno módulo p. Para a igual a dos esto es simplemente dos a la p menos uno congruente con uno módulo p para todo primo impar p. Un primo de Wieferich pide la misma congruencia un módulo más alto: dos a la p menos uno debe ser congruente con uno módulo p al cuadrado, no solo módulo p.
De forma equivalente, el orden de dos en el grupo multiplicativo de unidades módulo p al cuadrado divide p menos uno de modo que el cociente de Fermat de dos en base p se anula. Ese factor p extra en el módulo hace la condición extremadamente rara. Búsquedas informáticas exhaustivas han comprobado primos muy por encima de cualquier ejemplo de aula, y las únicas soluciones conocidas siguen siendo p igual a 1093 y p igual a 3511.
El primo dos falla: dos a la primera potencia es dos, y dos módulo cuatro es dos, no uno. Primos ordinarios como tres, cinco, siete y once producen restos distintos de uno cuando dos a la p menos uno se reduce módulo p al cuadrado.
Dónde un comprobador de primos de Wieferich aporta valor
Los cursos de teoría de números y las plataformas de preparación para olimpiadas usan un comprobador de primos de Wieferich para que el alumnado verifique afirmaciones de libro sobre los dos ejemplos conocidos sin implementar a mano la exponenciación modular y sin confundir el módulo p con p al cuadrado. Cuadernos de investigación y scripts de matemática recreativa llaman al mismo contrato al escanear primos candidatos o validar tablas fuera de línea frente a un oráculo independiente.
Sitios de contenido que compiten por comprobador de primos de Wieferich o consultas del cociente de Fermat se benefician de una herramienta en vivo cuya ruta gratuita coincide byte a byte con la automatización de pago. Equipos de ingeniería que enseñan o demuestran teoría de números criptográfica pueden mostrar cómo una congruencia parecida al pequeño teorema de Fermat se vuelve rarísima al elevar el módulo al cuadrado, reforzando por qué las hipótesis modulares ingenuas exigen un enunciado cuidadoso.
Prefiera esta herramienta cuando la pregunta sea estrictamente si un primo dado cumple dos a la p menos uno congruente con uno módulo p al cuadrado—no cuando necesite una búsqueda de todos los primos en un rango, un servicio de factorización completa o certificados para enteros de miles de bits.
Qué puede hacer con ella
Oráculo independiente para cuadernos de investigación
Valide tablas fuera de línea o barridos programados de primos candidatos frente a una implementación determinista de potencia modular.
Preguntas frecuentes
¿Qué es un primo de Wieferich?
Un primo p tal que 2^{p−1} ≡ 1 (mod p²). Solo se conocen 1093 y 3511. La comprobación es más estricta que el pequeño teorema de Fermat, que solo exige congruencia módulo p.
¿El 1093 es un primo de Wieferich?
Sí. El cuadrado de 1093 es 1194649, y 2 elevado a 1092 deja resto 1 al dividirlo entre ese cuadrado, que es justo la condición de Wieferich. Es uno de los dos únicos ejemplos conocidos.
¿Cuántos primos de Wieferich se conocen?
Solo dos: 1093 y 3511. Las búsquedas por ordenador han revisado primos mucho mayores que cualquier ejemplo de clase sin hallar un tercero, así que casi todo primo que pruebe fallará.
¿El 2 es un primo de Wieferich?
No. Para el primo 2, la potencia es 2 elevado a 1, que vale 2, y 2 dividido entre 4 deja resto 2, no 1. La condición no se cumple.
¿En qué se diferencia un primo de Wieferich del pequeño teorema de Fermat?
El pequeño teorema de Fermat dice que 2 elevado a p menos 1 deja resto 1 al dividirlo entre p, para todo primo impar. Un primo de Wieferich exige ese resto 1 al dividir entre el cuadrado de p.
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/wieferich-prime \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"p":1093}'const res = await fetch("https://api.kit.forhosting.com/numth/wieferich-prime", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"p": 1093
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/numth/wieferich-prime",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"p": 1093
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/numth/wieferich-prime", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"p":1093}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"p":1093}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/numth/wieferich-prime", 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
{
"p": 1093
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "numth.wieferich_prime",
"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 entrada compuesta se rechaza con invalid_input en lugar de un falso negativo, para que scripts de deberes y cuadernos de investigación no traten un compuesto como primo no-Wieferich por accidente.
Qué es un primo de Wieferich y por qué el módulo es p al cuadrado
Este endpoint codifica exactamente esa definición: nunca suaviza el módulo de vuelta a p, nunca sustituye un testigo probabilístico y nunca devuelve is_wieferich true a menos que la potencia modular completa sea uno.
Contrato de entrada, campos de respuesta y comportamiento de error
De forma crítica, p debe ser primo. Si el candidato es compuesto—por ejemplo cuatro, nueve o quince—el manejador rechaza la solicitud con un mensaje que nombra el valor y indica que no es primo. Ese diseño coincide con la definición matemática (los primos de Wieferich son una subclase de primos) y evita que los clientes lean un fallo de compuesto como un false exitoso. Envíe un cuerpo JSON por POST con el campo entero obligatorio p (alias prime y n). El valor puede llegar como número JSON o como cadena de dígitos decimales; debe ser un entero completo al menos dos y como máximo el techo de enteros seguros de JavaScript. Fracciones, booleanos, cadenas vacías y campos ausentes fallan con invalid_input antes de cualquier exponenciación. En caso de éxito el cuerpo incluye p ecoado como número; p_squared como la cadena decimal exacta de p por p; remainder como la cadena decimal exacta de dos a la p menos uno módulo p al cuadrado; is_wieferich como booleano verdadero solo cuando remainder es uno; y expression, una congruencia legible.
Dónde un comprobador de primos de Wieferich aporta valor
Como la capacidad es parse pura de nivel A, cada llamada exitosa es determinista, sin red y con precio $0.002 sin tokens de modelo. Mantenga p primo y dentro del rango seguro publicado, trate invalid_input como corrección del cliente y fije la cadena remainder en las pruebas para que refactorizaciones futuras no cambien en silencio el resultado modular.
Casos de integración
Comprobaciones de aula de los dos ejemplos conocidos
Permita que el alumnado envíe p igual a 1093 o 3511 y confirme que is_wieferich es true, luego contraste con primos ordinarios como 3, 5 o 7.
Landing SEO y widget gratuito del navegador
Ofrezca una página de comprobador de primos de Wieferich cuya ruta gratuita coincida con el remainder y el indicador de la API para el mismo primo p.
Preguntas técnicas
¿Qué entrada acepta el comprobador?
Un único entero primo p ≥ 2 (campo p, alias prime o n), como número JSON o cadena de dígitos dentro del rango de enteros seguros. No primos y valores mal formados fallan con invalid_input.
¿Qué ocurre si p no es primo?
La tarea falla con invalid_input. Los primos de Wieferich se definen solo para primos; los compuestos se rechazan en lugar de devolverse como is_wieferich false.
¿Es 2 un primo de Wieferich?
No. 2^{1} = 2 y 2 mod 4 es igual a 2, no a 1, así que is_wieferich es false para p igual a 2.
¿Cuánto cuesta el comprobador de primos de Wieferich?
La herramienta del navegador es gratuita. Las peticiones API usan saldo KIT prepago a $0.002 por llamada exitosa; la entrada inválida no se factura.