Calcolatore del numero di Jacobsthal
Inserisca un intero n da 0 a 40 e ottenga l'n-esimo numero di Jacobsthal esatto: la successione è 0, 1, 1, 3, 5, 11, 21, 43, e J(40) vale 366503875925. Ogni termine è il precedente più il doppio di quello prima. Gratis nel suo browser.
- Gratis
- Funziona nel suo browser
- Senza registrazione
- I suoi dati restano sul dispositivo
Esegui gratis nel browser
Esempio risolto
- Indice n
- 0
- Numero di Jacobsthal
- 0
Calcola l'n-esimo numero di Jacobsthal a partire da un unico intero n compreso tra 0 e 40. Lo strumento restituisce n e il suo value usando la forma chiusa J(n) = (2^n - (-1)^n)/3, equivalente alla ricorrenza J(n) = J(n-1) + 2·J(n-2).
La successione di Jacobsthal
I numeri di Jacobsthal iniziano con J(0) = 0 e J(1) = 1, poi seguono la ricorrenza J(n) = J(n-1) + 2·J(n-2), dando 0, 1, 1, 3, 5, 11, 21, 43, 85, 171, 341 e così via. Ogni termine è all'incirca il doppio del precedente, poiché i numeri di Jacobsthal consecutivi si alternano appena sopra e appena sotto le potenze di due; sono gli interi più vicini a 2^n/3.
Questo calcolatore prende un unico intero non negativo n tramite il campo obbligatorio n e restituisce un oggetto con quel n riportato e il suo value, l'n-esimo termine della successione.
Come viene calcolato il valore
Anziché iterare la ricorrenza, l'implementazione valuta direttamente la forma chiusa J(n) = (2^n - (-1)^n)/3. Calcola 2^n con l'aritmetica a precisione arbitraria BigInt, sottrae 1 quando n è pari e aggiunge 1 quando n è dispari (questo è il termine (-1)^n), e divide per 3, cosa sempre esatta perché 2^n - (-1)^n è dimostrabilmente divisibile per tre. Il risultato BigInt esatto viene poi convertito in un numero JavaScript.
È per questo che lo strumento è deterministico e riproducibile, senza deriva della virgola mobile accumulata sommando molti termini precedenti.
Regole di input ed errori
L'unico campo n deve essere un intero nell'intervallo inclusivo da 0 a 40. Non c'è alcun parametro decimals né configurazione facoltativa, così le richieste sono minime e inequivocabili. Poiché la convalida avviene in anticipo e l'aritmetica è esatta, i fallimenti sono economici e sicuri da riprovare, e il codice di errore leggibile dalla macchina permette a un client di distinguere una richiesta errata da un problema di trasporto.
Casi d'uso
Combinatoria e teoria dei numeri
Consulti un termine esatto di Jacobsthal quando lavora con tassellature, catene di Cunningham o identità 2-adiche.
Lavoro su successioni e OEIS
Generi valori di riferimento di J(n) per verificare codice o una formula rispetto ad A001045 senza una libreria locale.
Insegnamento delle ricorrenze
Mostri che la forma chiusa (2^n - (-1)^n)/3 corrisponde a J(n) = J(n-1) + 2·J(n-2) per ciascun n.
Domande frequenti
Cosa restituisce?
Un oggetto con il suo n e value, l'n-esimo numero di Jacobsthal calcolato da J(n) = (2^n - (-1)^n)/3.
Perché n è limitato a 40?
Affinché il risultato BigInt esatto rientri nell'intervallo di interi sicuri 2^53; J(40) è 366503875925, senza perdita di precisione.
Il risultato è esatto?
Sì. I numeri di Jacobsthal sono interi e la divisione per tre è sempre esatta, quindi non c'è alcun arrotondamento.
A cosa servono i numeri di Jacobsthal?
In combinatoria e teoria dei numeri, per esempio nei problemi di tassellatura, nelle catene di Cunningham e nelle identità 2-adiche. Sono anche valori di riferimento comodi per verificare il proprio programma o la propria formula con la successione pubblicata A001045.
Esiste una formula che evita di calcolare termine per termine?
Sì. Elevi 2 alla potenza n, sottragga 1 se n è pari o aggiunga 1 se è dispari, poi divida per 3. Per J(3) si ha 8 più 1, cioè 9, diviso 3: il risultato è 3, e la divisione è sempre esatta.
Strumenti correlati
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/math/jacobsthal-number \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"n":5}'const res = await fetch("https://api.kit.forhosting.com/math/jacobsthal-number", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"n": 5
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/math/jacobsthal-number",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"n": 5
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/math/jacobsthal-number", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"n":5}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"n":5}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/math/jacobsthal-number", 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
{
"n": 5
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "math.jacobsthal_number",
"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.
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. |
Note tecniche
Come viene calcolato il valore
Il dominio è limitato a n = 40 proprio affinché la risposta resti nell'intervallo di interi sicuri 2^53 e non perda mai precisione in quella conversione: J(40) è 366503875925, ben al di sotto del limite.
Regole di input ed errori
Qualsiasi altra cosa solleva un errore tipizzato invalid_input con il messaggio "n inválido": un valore negativo, un valore superiore a 40, un non intero come 2,5, una stringa o un campo mancante falliscono tutti lo stesso controllo prima che venga eseguito qualsiasi calcolo. L'esempio svolto passa n = 0 e riceve value 0, il primo termine della successione.
Domande tecniche
Quale input non è valido?
Non interi, negativi, valori superiori a 40 o un n mancante restituiscono un errore tipizzato invalid_input che riporta "n inválido".
È gratuito?
Sì nel browser come widget tier A. L'API deterministica costa $0.002 per chiamata riuscita; le attività fallite non vengono addebitate.