Sequência diatômica de Stern / Stern–Brocot
Obtenha qualquer termo da sequência diatômica de Stern a partir do índice: s(10) é 3, calculado com passos inteiros que dividem o índice ao meio, então até índices grandes saem exatos. 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
- N
- 10
- Valor Stern
- 3
- Recorrência
- s(0)=0; s(1)=1; s(2k)=s(k); s(2k+1)=s(k)+s(k+1)
A sequência diatômica de Stern é uma sequência clássica de inteiros fortemente ligada à árvore Stern–Brocot dos racionais positivos. Define-se por dois valores semente e uma regra de divisão segundo a paridade do índice: s de zero é zero, s de um é um; quando o índice é par e igual a dois k o termo vale s de k; quando é ímpar e igual a dois k mais um o termo vale s de k mais s de k mais um. A lista resultante começa zero, um, um, dois, um, três, dois, três, um, quatro, três, cinco, dois, cinco, três, quatro, e continua com a propriedade marcante de que termos consecutivos são sempre coprimos.
O que é a sequência diatômica de Stern e como funciona a recorrência par/ímpar
Comece com as sementes s de zero igual a zero e s de um igual a um. Para todo índice posterior a regra depende só da paridade. Se n é par, escreva n igual a dois k e defina s de n igual a s de k — o mesmo valor aparece na metade do índice.
Se n é ímpar, escreva n igual a dois k mais um e defina s de n igual a s de k mais s de k mais um. Desenrolar alguns passos produz zero, um, um, dois, um, três, dois, três, um, quatro, três, cinco, dois, cinco, três, quatro, um, cinco, quatro, sete, três, e assim por diante.
Pares adjacentes são sempre coprimos, todo racional positivo aparece exatamente uma vez como razão consecutiva s de m sobre s de m mais um ao percorrer a sequência, e essa enumeração é exatamente a árvore Stern–Brocot achatada por largura. A mesma recorrência às vezes se chama sequência de Calkin–Wilf ou Stern–Brocot conforme a apresentação; esta ferramenta usa a forma diatômica padrão com s de zero igual a zero.
Como cada passo é adição inteira exata ou um puro meio de índice, não há erro de arredondamento nem dependência de relógio ou sementes aleatórias. Quando você só precisa de um termo, envie o índice n; a resposta ecoa n, o valor de Stern, uma string curta de fórmula para os casos par e ímpar, e a descrição completa das sementes de recorrência para que avaliadores e alunos recomputem à mão ou no papel.
Dicas práticas, limites e buscas relacionadas
Na correção, afirme tanto o campo stern quanto a string formula para que uma recorrência errada ou uma confusão com Fibonacci seja fácil de diagnosticar. Páginas irmãs deste kit cobrem outras intenções de sequência e figurados como números de Padovan, triangulares, poligonais e somas de séries aritméticas; esta página é especificamente para quem busca uma calculadora da sequência Stern–Brocot, números diatômicos de Stern ou o n-ésimo termo da sequência de Stern.
Não trate o inteiro sozinho como caixa-preta — combine-o com as regras par e ímpar documentadas ao ensinar para que offsets alternativos de OEIS não se confundam com a convenção s de zero igual a zero usada aqui. Limite n a um bilhão para que cada requisição fique limitada; se precisar de índices maiores, mude para ferramentas de inteiros grandes fora deste caminho gratuito de parse.
Casos de uso
Validadores para concurso de programação e entrevistas
Afirme soluções candidatas a problemas da sequência de Stern ou da árvore Stern–Brocot sem reimplementar a recorrência em cada harness de linguagem.
Demos de ensino de pares consecutivos coprimos e enumeração racional
Projete n, stern, formula e recurrence em aula para que aprendizes vejam as sementes, as regras par e ímpar e como razões consecutivas cobrem os racionais positivos.
Perguntas frequentes
O que é a sequência diatômica de Stern?
A sequência definida por s(0)=0, s(1)=1, s(2k)=s(k) e s(2k+1)=s(k)+s(k+1). Começa 0, 1, 1, 2, 1, 3, 2, 3, 1, 4, 3, 5, … e liga-se à árvore Stern–Brocot.
Por que se chama Stern–Brocot?
Percorrer pares consecutivos s(n)/s(n+1) enumera cada racional positivo exatamente uma vez — a mesma estrutura da árvore Stern–Brocot de frações. A sequência em si é a diatômica de Stern.
O que são s(0) e s(1)?
Na convenção usada aqui, s(0)=0 e s(1)=1. Todo termo posterior segue as regras de índice par e ímpar. A resposta sempre ecoa a recorrência para que as sementes fiquem explícitas.
A calculadora da sequência Stern–Brocot é gratuita?
A ferramenta do navegador é gratuita e roda localmente.
Como calculo s(10) à mão?
Divida o índice por dois enquanto ele for par e separe-o quando for ímpar. Como 10 é par, s(10) é igual a s(5); 5 é ímpar, então s(5) é s(2) mais s(3), ou seja, 1 mais 2, que dá 3.
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/stern-brocot \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"n":10}'const res = await fetch("https://api.kit.forhosting.com/math/stern-brocot", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"n": 10
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/math/stern-brocot",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"n": 10
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/math/stern-brocot", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"n":10}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"n":10}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/math/stern-brocot", 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": 10
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "math.stern_brocot",
"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.
Limites
max_n | 1000000000 |
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
Esta capacidade devolve o valor exato n-ésimo de Stern como objeto JSON determinístico — sem pacote de álgebra computacional, sem aproximação em ponto flutuante, sem chamada de rede — de modo que corretores de tarefas, validadores de concurso e demos de ensino veem o mesmo resultado inteiro puro no executor gratuito do navegador e no caminho da API pré-paga.
Como chamar a API e o que volta
Uma resposta bem-sucedida inclui n ecoado, stern igual a s de n, formula igual às regras compactas par e ímpar, e recurrence documentando as sementes junto com s de dois k igual a s de k e s de dois k mais um igual a s de k mais s de k mais um. Use em pipelines de tarefas, validadores de concurso de programação, sandboxes de preparação para entrevistas, jobs de enriquecimento de notebooks ou qualquer fluxo que precise de um termo de Stern reproduzível sem instalar pacotes de sequências especializadas em cada máquina. Para índices de multiprecisão além desse limite, use uma pilha de inteiros grandes dedicada em vez desta capacidade leve de parse. Envie um corpo JSON com um único campo obrigatório n: um número inteiro não negativo no máximo um bilhão, o índice do termo de Stern desejado. Aliases index e order são aceitos com o mesmo significado. Validação falha — n ausente, não inteiro, fração, valor acima do limite publicado de um bilhão, ou qualquer número negativo — devolve invalid_input e nunca é cobrada. O preço é um US$ 0,002 fixo por requisição bem-sucedida com item unitário e preço marginal zero. Mantenha n dentro do teto publicado; o passeio par/ímpar é logarítmico em n, então uma única requisição permanece barata no Worker e no navegador.
Dicas práticas, limites e buscas relacionadas
Prefira exemplos de sala emparelhados: n igual a zero rende zero; n igual a um rende um; n igual a dez rende três; n igual a quinze rende quatro; e um n negativo demonstra o caminho de rejeição rígida com invalid_input. Como termos consecutivos são sempre coprimos, alunos podem checar o mdc de s de n e s de n mais um à mão para n pequenos e bater com a API. Tarefas falhas que devolvem invalid_input não consomem saldo pré-pago, o que mantém scripts exploratórios baratos quando usuários digitam valores ruins ao aprender o contrato.
Casos de integração
Tarefas: calcular o n-ésimo termo diatômico de Stern
Dê aos alunos um índice e confira o valor de Stern calculado à mão com um resultado determinístico da API ou do navegador gratuito com a mesma recorrência par/ímpar e sementes.
Perguntas técnicas
Quais entradas são rejeitadas?
Falta de n, não inteiros, valores acima de 1_000_000_000 e qualquer número negativo devolvem invalid_input. Essas falhas não são cobradas.