Equação de Pell
O solucionador da equação de Pell encontra a solução fundamental de x² − Dy² = 1 para um inteiro positivo D que não seja quadrado perfeito.
Executar grátis
Informe D e você receberá o menor par de inteiros positivos x e y que satisfaz a equação. O cálculo usa aritmética inteira exata, portanto até respostas além da faixa numérica comum do JavaScript permanecem corretas. A ferramenta é útil em exercícios de teoria dos números, estudos de frações contínuas, testes de algoritmos e sistemas que precisam de uma solução de Pell canônica e confiável.
O significado da solução fundamental
Para um inteiro positivo D fixo que não seja quadrado, a equação de Pell procura valores inteiros que satisfaçam x² − Dy² = 1. Há infinitas soluções positivas, mas elas são geradas a partir de um único par não trivial mínimo. Esta calculadora retorna esse par, chamado de solução fundamental: x e y são positivos, a identidade é satisfeita exatamente e nenhum x positivo menor resolve a mesma equação. Por exemplo, D = 2 resulta em x = 3 e y = 2, pois 3² − 2 × 2² é igual a 1. A entrada deve ser um número inteiro entre 2 e 10,000,000. Um D quadrado perfeito é rejeitado porque x² − Dy² se fatora como (x − √D y)(x + √D y), e não existe solução positiva com y maior que zero. Os resultados são apresentados como strings decimais, não como valores de ponto flutuante. Essa representação preserva todos os dígitos quando a solução fundamental é inesperadamente grande, o que ocorre até para alguns valores modestos de D. Assim, você pode copiar a resposta para um sistema de álgebra computacional ou uma biblioteca de precisão arbitrária sem arredondamento prévio.
Como as frações contínuas encontram a resposta
O algoritmo expande √D como uma fração contínua simples periódica. Seus convergentes fornecem aproximações racionais p/q cada vez melhores para √D, e o numerador e o denominador de um deles finalmente satisfazem p² − Dq² = 1. O solucionador atualiza o estado da fração contínua e as duas recorrências dos convergentes com operações inteiras determinísticas. Após cada etapa, ele testa a identidade de Pell usando aritmética BigInt e retorna imediatamente a primeira solução positiva. Esse primeiro convergente válido é a solução fundamental, portanto a ferramenta não precisa pesquisar pares arbitrários de inteiros nem estimar um intervalo para x e y. A contagem de iterações informa quantos convergentes foram testados, incluindo a parte inteira inicial de √D. Esse campo ajuda a comparar comprimentos de período ou analisar o desempenho, mas não altera o resultado matemático. Nenhuma aproximação numérica participa do teste final da identidade. A raiz quadrada comum serve apenas para obter o piso inteiro exato do D limitado; todos os valores de solução potencialmente grandes e todas as igualdades são calculados de modo exato.
Como usar e conferir os valores retornados
Envie um objeto com o campo d, como {"d": 13}. O alias D em maiúscula também é aceito para fórmulas copiadas da notação convencional. Uma resposta bem-sucedida inclui d, x, y e iterations. No código da sua aplicação, trate x e y como strings de inteiros decimais: linguagens com inteiros de precisão arbitrária podem convertê-las diretamente, enquanto sistemas restritos a números de largura fixa devem manter as strings ou usar uma biblioteca de inteiros grandes. Para verificar a resposta de forma independente, eleve x ao quadrado, subtraia D vezes o quadrado de y e confirme que o resultado é exatamente um. Faça essa verificação com aritmética inteira, não com ponto flutuante. Tipos inválidos, frações, valores fora do intervalo publicado e quadrados perfeitos geram um erro de entrada inválida em vez de um resultado enganoso. O solucionador não usa rede, aleatoriedade, estado armazenado nem data atual; assim, o mesmo D sempre produz a mesma resposta. O navegador é prático para cálculos isolados, e a API custa US$ 0,002 por solicitação quando você precisa integrá-la a um script, serviço educacional ou conjunto de testes.
Casos de uso
Confira exercícios de teoria dos números
Calcule a solução canônica mínima e compare uma expansão manual em fração contínua com valores exatos de x e y.
Crie casos de teste determinísticos
Gere soluções exatas de Pell para validar aritmética de precisão arbitrária, recorrências ou rotinas de álgebra computacional.
Explore períodos de frações contínuas
Compare as contagens de iterações e os tamanhos das soluções para diferentes valores não quadrados de D.
Perguntas frequentes
O que o solucionador retorna?
Ele retorna o valor d, a solução positiva fundamental x e y como strings decimais exatas e o número de convergentes testados.
Por que x e y são strings?
Soluções de Pell podem superar o intervalo inteiro seguro de ambientes JSON comuns. Strings decimais preservam todos os dígitos sem arredondamento.
Por que um D quadrado perfeito é rejeitado?
Para D quadrado, não há solução de Pell não trivial com y positivo; portanto, não existe solução positiva fundamental.
Qual intervalo de entrada é aceito?
D deve ser um inteiro não quadrado entre 2 e 10,000,000.
Quanto custa uma chamada à API?
Cada solicitação à API custa US$ 0,002. Você também pode executar a capacidade gratuitamente no navegador.
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/pell-equation-solver \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"d":61}'const res = await fetch("https://api.kit.forhosting.com/numth/pell-equation-solver", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"d": 61
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/numth/pell-equation-solver",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"d": 61
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/numth/pell-equation-solver", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"d":61}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"d":61}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/numth/pell-equation-solver", 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
{
"d": 61
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "numth.pell_equation_solver",
"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_d | 10000000 |
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. |