Verifica dei numeri socievoli e dei cicli aliquoti
Il verificatore di numeri socievoli parte da un intero positivo e lo sostituisce ripetutamente con la somma dei suoi divisori propri.
Esegui gratis nel browser
Registra ogni termine finché la successione raggiunge zero o ripete un valore, quindi distingue un ciclo che torna al numero iniziale da un percorso che entra in un altro ciclo. Il risultato comprende la successione osservata, il ciclo ripetuto, la sua lunghezza e il numero di iterazioni, così Lei può controllare o riutilizzare il calcolo.
Che cosa si intende per ciclo socievole
La somma aliquota è la somma di tutti i divisori positivi di un intero, escluso l’intero stesso. Partendo da 12496, per esempio, l’operazione produce un altro numero; applicandola ripetutamente a ogni risultato, si ritorna infine a 12496 dopo aver attraversato diversi termini distinti. Il verificatore definisce questo percorso un ciclo socievole perché il valore ripetuto coincide con quello iniziale. La risposta imposta forms_sociable_cycle su vero, assegna lo stato di ciclo socievole e restituisce i membri in ordine senza duplicare il valore di chiusura nell’elenco del ciclo. La successione completa include invece l’ultima ripetizione, affinché Lei possa verificare direttamente la chiusura. Con questa convenzione un numero perfetto è un ciclo di lunghezza uno, mentre una coppia amicale è un ciclo di lunghezza due. I cicli più lunghi seguono la medesima regola. I casi speciali matematicamente collegati rimangono quindi visibili e ogni applicazione può filtrare i soli cicli di lunghezza almeno tre. Il conteggio dei passi misura le trasformazioni aliquote, non i valori distinti memorizzati.
Come vengono segnalati l’arresto e gli altri cicli
Non ogni valore iniziale appartiene a un ciclo socievole. Se l’iterazione raggiunge 1, la somma aliquota successiva è 0, perché 1 non possiede divisori propri positivi. Il verificatore restituisce allora uno stato terminato, un esito falso e zero come valore terminale. Un’altra traiettoria può confluire in un ciclo il cui primo membro non è il numero richiesto. In tal caso la risposta indica l’ingresso in un altro ciclo, identifica l’indice in cui esso comincia e restituisce soltanto la parte periodica nel campo del ciclo. La distinzione conta nello studio della dinamica aliquota: incontrare un valore ripetuto dimostra la periodicità futura del percorso osservato, ma non dimostra che l’intero iniziale appartenga a quel periodo. L’elenco della successione conserva l’intero tragitto, dal valore fornito fino alla ripetizione conclusiva, così Lei può rappresentarlo, verificarlo o confrontarlo con un’implementazione indipendente della somma dei divisori. I campi non pertinenti a un percorso terminato vengono omessi anziché valorizzati con null.
Limiti sicuri, calcolo deterministico e uso dell’API
Le successioni aliquote possono crescere rapidamente e la fattorizzazione di termini sempre maggiori può richiedere più lavoro di quanto sia opportuno per un calcolo leggero nel browser o in periferia. La capacità impone quindi il limite sicuro di 1,000,000,000 per ogni termine e un massimo di 1,000 trasformazioni. Anche il valore iniziale deve rispettare tale soglia. Se una somma calcolata la supera, la richiesta termina con un errore di input non valido che specifica il termine sorgente e il limite; non viene mai fornito un risultato parziale confondibile con una conclusione matematica. Anche una successione che non termina né si ripete entro il massimo dei passi genera un errore esplicito. Entro questi limiti, l’algoritmo è deterministico: enumera coppie di divisori fino alla radice quadrata, conta una radice esatta una sola volta e non usa rete, orologio, casualità o stato persistente. Invii il campo obbligatorio start come intero positivo. Lo stesso input produce sempre lo stesso JSON nel browser o tramite API, al costo di $0.002 per richiesta.
Casi d'uso
Esplorare un numero socievole noto
Confermi il ciclo completo, la sua lunghezza e la precisa transizione aliquota che lo chiude.
Classificare una traiettoria aliquota
Distingua l’arresto a zero, l’appartenenza al ciclo iniziale e l’ingresso in un altro ciclo.
Validare codice di teoria dei numeri
Confronti una successione deterministica e il confine ciclico con un’altra implementazione dei divisori propri.
Domande frequenti
Che cos’è una somma aliquota?
È la somma di tutti i divisori positivi di un numero tranne il numero stesso. Per 6, i divisori propri 1, 2 e 3 sommano a 6.
Sono inclusi numeri perfetti e coppie amicali?
Sì. Il verificatore considera un numero perfetto un ciclo di lunghezza uno e una coppia amicale un ciclo di lunghezza due.
Perché la successione ripete l’ultimo valore?
La ripetizione finale mostra chiaramente dove si chiude il percorso. L’elenco separato del ciclo include ogni membro una sola volta.
Che cosa accade se un termine generato è troppo grande?
La richiesta restituisce un errore di input non valido appena il termine supera il limite sicuro, senza mostrare una classificazione incompleta.
Quanto costa una verifica tramite API?
Ogni richiesta API costa $0.002. La versione nel browser utilizza lo stesso calcolo deterministico.
Per sviluppatori — accesso via API
Tutto quello che vedi in questa pagina è disponibile anche via API. Questa sezione è per i team che vogliono integrarlo nei propri sistemi; chi non ne ha bisogno può semplicemente usare lo strumento qui sopra.
Endpoint
Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.
Chiamala dal tuo 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)Esempio di richiesta
{
"start": 12496
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "numth.sociable_numbers",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L'API è asincrona: ricevi subito un task_id e puoi fare polling fino a 1 richiesta al secondo.
Prezzi
Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.
Limiti
max_term | 1000000000 |
max_steps | 1000 |
Errori
| HTTP | Codice | Significato |
|---|---|---|
401 | unauthorized | Chiave API mancante o non valida: controlla l'header Authorization. |
402 | insufficient_balance | Credito esaurito: ricarica per continuare a eseguire attività. |
404 | unknown_type | Tipo di attività sconosciuto: controlla il campo type della richiesta. |
429 | rate_limited | Troppe richieste in poco tempo: rallenta e riprova tra qualche secondo. |