Comprobador de números sociables y ciclos alícuotas
El comprobador de números sociables parte de un entero positivo y lo sustituye repetidamente por la suma de sus divisores propios.
Ejecutar — gratis
Registra todos los términos hasta que la sucesión llega a cero o repite un valor, y distingue entre un ciclo que regresa al número inicial y una trayectoria que entra en otro ciclo. El resultado incluye la sucesión observada, el ciclo repetido, su longitud y el número de iteraciones, para que usted pueda revisar o reutilizar el cálculo.
Qué entiende el comprobador por ciclo sociable
Una suma alícuota reúne todos los divisores positivos de un entero, salvo el propio entero. Al comenzar en 12496, por ejemplo, la operación produce otro número; si se repite sobre cada resultado, finalmente vuelve a 12496 después de recorrer varios términos distintos. El comprobador lo considera un ciclo sociable porque el valor repetido coincide con el punto de partida. La respuesta marca forms_sociable_cycle como verdadero, asigna el estado de ciclo sociable y presenta los miembros en orden sin duplicar el valor de cierre dentro del arreglo del ciclo. La sucesión completa sí contiene esa última repetición, de modo que usted puede verificar el cierre directamente. Por esta convención, un número perfecto forma un ciclo de longitud uno y una pareja de números amigos forma uno de longitud dos. Los ciclos más largos se procesan con la misma regla. Así no se ocultan estos casos especiales relacionados y cada usuario puede filtrar, si lo desea, los ciclos de longitud igual o superior a tres. El número de pasos representa transformaciones alícuotas, no valores distintos almacenados.
Cómo se indican la terminación y los ciclos ajenos
No todo valor inicial pertenece a un ciclo sociable. Si la iteración llega a 1, la suma alícuota siguiente es 0, porque 1 carece de divisores propios positivos. El comprobador devuelve entonces un estado de terminación, un resultado falso y cero como valor terminal. Otra trayectoria puede desembocar en un ciclo cuyo primer miembro no sea el número solicitado. En ese caso, la respuesta señala que se entró en otro ciclo, identifica el índice donde empieza y devuelve únicamente la parte periódica en el campo del ciclo. Esta diferencia es importante al estudiar la dinámica alícuota: encontrar un valor repetido demuestra periodicidad eventual en la trayectoria observada, pero no demuestra que el entero inicial pertenezca a ese período. El arreglo de la sucesión conserva todo el recorrido desde el valor enviado hasta la repetición de cierre, por lo que usted puede representarlo, auditarlo o compararlo con otra implementación de la suma de divisores. Los campos que no corresponden a una trayectoria terminada se omiten en lugar de rellenarse con valores nulos.
Límites seguros, cálculo determinista y uso de la API
Las sucesiones alícuotas pueden crecer deprisa, y factorizar términos cada vez mayores puede exigir más trabajo del razonable para un cálculo breve en navegador o en el borde. Por ello, esta capacidad impone un máximo seguro de 1,000,000,000 por término y un límite de 1,000 transformaciones. El valor inicial ya debe respetar el primer límite. Si una suma alícuota calculada lo supera, la solicitud falla con un error de entrada no válida que indica el término de origen y el límite; nunca entrega un resultado parcial que pudiera confundirse con una conclusión matemática. También se produce un error explícito si la sucesión no termina ni repite dentro del máximo de pasos. Dentro de estos límites, el algoritmo es determinista: enumera parejas de divisores hasta la raíz cuadrada de cada término, cuenta una raíz exacta una sola vez y no utiliza red, reloj, azar ni estado almacenado. Envíe el campo obligatorio start como entero positivo. Una misma entrada siempre genera el mismo resultado JSON, tanto en el navegador como mediante la API por $0.002 cada solicitud.
Qué puede hacer con ella
Explorar un número sociable conocido
Confirme el ciclo completo, su longitud y la transición alícuota exacta que lo cierra.
Clasificar una trayectoria alícuota
Distinga entre la terminación en cero, la pertenencia al ciclo inicial y la entrada en otro ciclo repetido.
Validar código de teoría de números
Compare una sucesión determinista y su frontera cíclica con otra implementación de divisores propios.
Preguntas frecuentes
¿Qué es una suma alícuota?
Es la suma de todos los divisores positivos de un número excepto el propio número. Para 6, los divisores propios 1, 2 y 3 suman 6.
¿Se incluyen los números perfectos y las parejas de amigos?
Sí. Este comprobador trata un número perfecto como ciclo de longitud uno y una pareja de amigos como ciclo de longitud dos.
¿Por qué la sucesión repite su último valor?
El valor repetido al final muestra dónde se cierra la trayectoria. El arreglo independiente del ciclo enumera cada miembro una sola vez.
¿Qué ocurre si un término generado es demasiado grande?
La solicitud devuelve un error de entrada no válida en cuanto un término supera el límite seguro, sin presentar una clasificación incompleta.
¿Cuánto cuesta una comprobación por API?
Cada solicitud API cuesta $0.002. La versión del navegador emplea el mismo cálculo determinista.
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/sociable-numbers \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"start":12496}'const res = await fetch("https://api.kit.forhosting.com/numth/sociable-numbers", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"start": 12496
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/numth/sociable-numbers",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"start": 12496
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/numth/sociable-numbers", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"start":12496}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"start":12496}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/numth/sociable-numbers", 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
{
"start": 12496
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "numth.sociable_numbers",
"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.
Límites
max_term | 1000000000 |
max_steps | 1000 |
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. |