Calculadora de número de Jacobsthal
Digite um número inteiro n de 0 a 40 e receba o enésimo número de Jacobsthal exato: a sequência é 0, 1, 1, 3, 5, 11, 21, 43, e J(40) vale 366503875925. Cada termo é o anterior mais o dobro do que vem antes dele. Grátis no seu navegador.
- Grátis
- Funciona no seu navegador
- Sem cadastro
- Seus dados não saem do seu aparelho
Executar grátis
Exemplo resolvido
- Índice n
- 0
- Número de Jacobsthal
- 0
Calcule o n-ésimo número de Jacobsthal a partir de um único inteiro n entre 0 e 40. A ferramenta retorna n e seu value usando a forma fechada J(n) = (2^n - (-1)^n)/3, equivalente à recorrência J(n) = J(n-1) + 2·J(n-2).
A sequência de Jacobsthal
Os números de Jacobsthal começam com J(0) = 0 e J(1) = 1, e então seguem a recorrência J(n) = J(n-1) + 2·J(n-2), dando 0, 1, 1, 3, 5, 11, 21, 43, 85, 171, 341 e assim por diante. Cada termo é aproximadamente o dobro do anterior, já que números de Jacobsthal consecutivos alternam logo acima e logo abaixo de potências de dois; eles são os inteiros mais próximos de 2^n/3.
Esta calculadora recebe um único inteiro não negativo n através do campo obrigatório n e retorna um objeto com esse n devolvido e o seu value, o n-ésimo termo da sequência.
Como o valor é calculado
Em vez de iterar a recorrência, a implementação avalia a forma fechada J(n) = (2^n - (-1)^n)/3 diretamente. Ela calcula 2^n com aritmética BigInt de precisão arbitrária, subtrai 1 quando n é par e soma 1 quando n é ímpar (esse é o termo (-1)^n), e divide por 3, o que é sempre exato porque 2^n - (-1)^n é comprovadamente divisível por três. O resultado BigInt exato é então convertido em um número de JavaScript.
É por isso que a ferramenta é determinística e reproduzível, sem desvio de ponto flutuante acumulado por somar muitos termos anteriores.
Regras de entrada e erros
O único campo n deve ser um inteiro na faixa inclusiva de 0 a 40. Não há parâmetro decimals nem configuração opcional, de modo que as requisições são mínimas e inequívocas. Como a validação acontece antecipadamente e a aritmética é exata, as falhas são baratas e seguras para tentar novamente, e o código de erro legível por máquina permite que um cliente distinga uma requisição inválida de um problema de transporte.
Casos de uso
Combinatória e teoria dos números
Consulte um termo exato de Jacobsthal ao trabalhar com ladrilhamentos, cadeias de Cunningham ou identidades 2-ádicas.
Trabalho com sequências e OEIS
Gere valores de referência de J(n) para conferir código ou uma fórmula contra A001045 sem uma biblioteca local.
Ensino de recorrências
Mostre que a forma fechada (2^n - (-1)^n)/3 coincide com J(n) = J(n-1) + 2·J(n-2) para cada n.
Perguntas frequentes
O que ele retorna?
Um objeto com o seu n e value, o n-ésimo número de Jacobsthal calculado a partir de J(n) = (2^n - (-1)^n)/3.
Por que n é limitado a 40?
Para que o resultado BigInt exato caiba na faixa de inteiros seguros de 2^53; J(40) é 366503875925, sem perda de precisão.
O resultado é exato?
Sim. Os números de Jacobsthal são inteiros e a divisão por três é sempre exata, de modo que não há arredondamento.
Para que servem os números de Jacobsthal?
Em combinatória e teoria dos números, por exemplo em problemas de ladrilhamento, cadeias de Cunningham e identidades 2-ádicas. Também são valores de referência úteis para conferir seu próprio programa ou fórmula com a sequência publicada A001045.
Existe uma fórmula que evita calcular termo a termo?
Sim. Eleve 2 à potência n, subtraia 1 se n for par ou some 1 se for ímpar, e divida por 3. Para J(3) são 8 mais 1, ou seja 9, dividido por 3: o resultado é 3, e a divisão é sempre exata.
Ferramentas relacionadas
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
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)Exemplo de requisição
{
"n": 5
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "math.jacobsthal_number",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |
Notas técnicas
Como o valor é calculado
O domínio é limitado a n = 40 precisamente para que a resposta permaneça dentro da faixa de inteiros seguros de 2^53 e nunca perca precisão nessa conversão: J(40) é 366503875925, bem abaixo do limite.
Regras de entrada e erros
Qualquer outra coisa gera um erro tipado invalid_input com a mensagem "n inválido": um valor negativo, um valor acima de 40, um não inteiro tal como 2.5, uma string ou um campo ausente falham todos na mesma verificação antes de qualquer cálculo rodar. O exemplo resolvido passa n = 0 e recebe value 0, o primeiro termo da sequência.
Perguntas técnicas
Qual entrada é inválida?
Não inteiros, negativos, valores acima de 40 ou um n ausente retornam um erro tipado invalid_input com a mensagem "n inválido".
É grátis?
Sim no navegador como um widget tier A. A API determinística custa US$ 0,002 por chamada bem-sucedida; tarefas com falha não são cobradas.