Calculadora de expansão de Engel para frações
Esta calculadora de expansão de Engel converte qualquer número racional positivo em sua representação exata como soma de produtos.
Executar grátis
Informe uma fração, como 4/13, e receba a sequência não decrescente de denominadores de Engel, os termos de frações unitárias correspondentes e uma versão normalizada da entrada. Todos os cálculos usam aritmética de inteiros, portanto aproximações de dízimas periódicas e arredondamentos de ponto flutuante não alteram o resultado. A ferramenta é útil para estudar teoria dos números, preparar exemplos resolvidos, conferir cálculos simbólicos e criar testes de software reproduzíveis.
O que uma expansão de Engel representa
Uma expansão de Engel escreve um número real positivo como uma soma cujos denominadores são produtos acumulados. Se a lista retornada for a1, a2, a3, o valor representado será 1/a1 + 1/(a1 a2) + 1/(a1 a2 a3), e o mesmo padrão continuará em cada entrada posterior. Para uma entrada racional positiva, o processo termina; assim, a calculadora retorna uma lista e uma expressão finitas. Os denominadores não diminuem, característica que confere à representação sua estrutura ordenada. Ela difere de uma decomposição comum em frações egípcias: ambas usam frações unitárias, porém a expansão de Engel condiciona cada novo termo ao produto de todos os denominadores já escolhidos. A saída inclui a lista bruta, conveniente para matemática ou programação, e os termos desenvolvidos da soma de produtos, que facilitam a inspeção do valor. A fração é reduzida primeiro, portanto entradas equivalentes como 8/26 e 4/13 produzem a mesma fração normalizada e a mesma expansão.
Como o algoritmo exato funciona
O cálculo começa com o valor racional positivo atual p/q e escolhe o próximo denominador como o teto de q/p. Essa escolha usa divisão inteira, sem converter a fração em decimal. Em seguida, o resíduo é transformado pela recorrência de Engel: p é substituído por a vezes p menos q, q é mantido e a fração resultante é reduzida pelo máximo divisor comum. Quando o novo numerador chega a zero, a expansão está concluída; caso contrário, as etapas se repetem. Como numeradores, denominadores, tetos, produtos e reduções usam inteiros de precisão arbitrária, a resposta permanece exata mesmo se os valores excederem o intervalo inteiro seguro do JavaScript. A implementação rejeita texto malformado, zero, valores negativos e denominador nulo, em vez de tentar adivinhar a intenção. O tamanho da entrada e a extensão da expansão também têm limites para garantir uma execução previsível. Essas regras tornam o resultado determinístico no navegador e na API: a mesma fração válida sempre gera os mesmos dados matemáticos.
Como ler e aproveitar o resultado
Comece pelo campo de denominadores quando precisar da sequência canônica de Engel. Os itens são strings para preservar com exatidão inteiros muito grandes em sistemas JSON que não representam todos os números com segurança. O campo de comprimento informa quantos denominadores e, consequentemente, quantos termos de fração unitária existem. O campo da expansão multiplica cumulativamente os denominadores selecionados e apresenta cada recíproco, permitindo que você confira a soma de forma independente com aritmética racional. Em aulas, compare cada denominador escolhido com a regra do teto e calcule o resíduo após cada etapa. Em testes de software, use a fração normalizada e o array de denominadores como resultados estáveis, inclusive com entradas equivalentes não reduzidas para verificar a normalização. Esta capacidade aceita apenas frações positivas; ela não calcula uma expansão infinita de decimal irracional, não interpreta números mistos e não aproxima valores de ponto flutuante. Pela API, cada solicitação custa US$ 0,002. O navegador e a API compartilham o mesmo solucionador puro.
Casos de uso
Conferir um exercício de teoria dos números
Compare uma sequência de Engel obtida à mão com o resultado exato e examine os termos de produtos acumulados.
Criar vetores de teste determinísticos
Gere resultados esperados estáveis para bibliotecas de aritmética racional sem depender de aproximações de ponto flutuante.
Demonstrar representações racionais
Mostre como a recorrência do teto transforma uma fração positiva em uma expansão ordenada como soma de produtos.
Perguntas frequentes
Qual formato de entrada é aceito?
Use dois inteiros positivos em base 10 separados por uma barra, como 4/13. Espaços ao redor e um sinal de mais opcional são aceitos.
Posso informar zero ou uma fração negativa?
Não. Uma entrada com numerador ou denominador não positivo retorna um erro de entrada inválida.
Por que os denominadores são retornados como strings?
As strings preservam exatamente os inteiros de precisão arbitrária quando o resultado é codificado como JSON.
Isso é igual a uma expansão em frações egípcias?
Não exatamente. Os termos de Engel têm denominadores formados pelos produtos acumulados de uma sequência não decrescente, uma restrição estrutural adicional.
A calculadora usa aproximações decimais?
Não. A análise, os tetos, as reduções por máximo divisor comum e os produtos usam aritmética inteira exata.
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/numth/engel-expansion \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"fraction":"4/13"}'const res = await fetch("https://api.kit.forhosting.com/numth/engel-expansion", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"fraction": "4/13"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/numth/engel-expansion",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"fraction": "4/13"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/numth/engel-expansion", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"fraction":"4/13"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"fraction":"4/13"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/numth/engel-expansion", 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
{
"fraction": "4/13"
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "numth.engel_expansion",
"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. |