Período de Pisano
Calcule o período de Pisano de qualquer módulo até 1.000.000: módulo 10, os restos de Fibonacci se repetem a cada 60 passos, e módulo 2, a cada 3. A resposta é o comprimento exato do ciclo, calculado só com números inteiros. 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
- M
- 10
- Período de Pisano
- 60
A calculadora do período de Pisano determina quantos resíduos de Fibonacci aparecem antes de a sequência se repetir para um módulo positivo escolhido. Em vez de produzir uma quantidade arbitrária de termos, ela acompanha pares consecutivos de resíduos até o retorno do estado inicial único e informa o tamanho do ciclo. Isso é útil em aritmética modular, competições de programação, análise de recorrências e algoritmos que precisam reduzir com segurança índices enormes de Fibonacci. Informe um módulo de 1 a 1,000,000 para receber um resultado exato e determinístico.
O que um período de Pisano mede
A sequência de Fibonacci começa com 0, 1, 1, 2, 3, 5 e continua pela soma dos dois termos anteriores. Calcular cada termo módulo m substitui cada número de Fibonacci pelo resto de sua divisão por m. Como existe apenas uma quantidade finita de pares ordenados de restos, essa sequência derivada acaba se repetindo.
Nos resíduos de Fibonacci, a repetição retorna ao par inicial; o número de passos até esse retorno recebe o nome de período de Pisano. Por exemplo, módulo 2, os resíduos são 0, 1, 1 e então o padrão recomeça, resultando em período 3. Módulo 10 tem período 60, o que explica por que os algarismos finais dos números de Fibonacci se repetem a cada 60 posições.
Esta calculadora retorna o tamanho do ciclo, não uma lista de resíduos nem um termo de Fibonacci. O módulo especial 1 tem somente o resíduo 0, portanto sua sequência de estado único tem período 1. Todo cálculo aceito usa aritmética inteira exata, sem aproximação, amostragem ou teste probabilístico.
Como a calculadora detecta o ciclo
Um valor de Fibonacci depende dos dois valores imediatamente anteriores, portanto a repetição de um único resto não basta para provar que toda a sequência recomeçou. A calculadora acompanha um par ordenado de resíduos consecutivos. Ela começa com 0 e 1, substitui repetidamente o par pelo próximo par modular de Fibonacci e conta cada transição.
Quando o par ordenado 0, 1 reaparece, a contagem corresponde ao período de Pisano. Esse teste por pares evita interrupções incorretas que ocorreriam se a implementação observasse apenas um zero ou qualquer resto individual repetido. O uso de memória permanece constante, pois o cálculo precisa somente do par atual e de um contador; o ciclo inteiro não é armazenado.
O módulo é limitado a 1,000,000 para que o tempo de execução de uma solicitação interativa tenha um limite explícito. As entradas devem ser números inteiros positivos. Frações decimais, textos não numéricos, zero, valores negativos e valores acima do limite publicado são rejeitados, sem arredondamento ou alteração silenciosa.
Como usar o resultado em cálculos modulares de Fibonacci
Depois de conhecer o período p, você pode reduzir os índices de Fibonacci módulo p sempre que apenas o valor módulo m for relevante: F(n) mod m é igual a F(n mod p) mod m. Essa identidade transforma um índice enorme em um índice equivalente muito menor antes de um cálculo por duplicação rápida ou exponenciação de matrizes.
Ela é especialmente útil quando o índice é fornecido como uma cadeia decimal muito longa, quando uma recorrência aparece em um exercício de criptografia ou quando um problema de programação solicita apenas os últimos algarismos. Mantenha separadas as funções dos dois módulos: m controla os resíduos de Fibonacci, enquanto o período de Pisano retornado controla a redução do índice. Em geral, um período não é igual a m, e os períodos de módulos compostos refletem a interação de seus fatores que são potências de primos.
Não há cobrança por termo, e o algoritmo não acessa a rede nem dados externos.
Casos de uso
Reduzir um índice enorme de Fibonacci
Encontre primeiro o tamanho do ciclo, reduza o índice por esse período e calcule somente a posição modular equivalente de Fibonacci.
Verificar a repetição dos últimos algarismos
Use o módulo 10, 100 ou outra potência de dez para descobrir com que frequência os últimos algarismos dos números de Fibonacci se repetem.
Conferir exercícios de teoria dos números
Confirme tamanhos esperados de ciclos modulares ao estudar recorrências, congruências, potências de primos ou módulos compostos.
Perguntas frequentes
O que é um período de Pisano?
É a quantidade de resíduos de Fibonacci módulo m antes que a sequência ordenada retorne ao estado inicial e se repita.
Por que o período de Pisano para o módulo 1 é igual a 1?
Módulo 1, todo inteiro tem resíduo 0; assim, a sequência de resíduos contém um único estado repetido.
Qual é o maior módulo aceito?
A calculadora aceita módulos inteiros positivos de até 1,000,000 para manter um limite de execução claro em cada solicitação.
O resultado fornece um número de Fibonacci?
Não. Ele fornece o tamanho do ciclo repetitivo de resíduos de Fibonacci para o módulo solicitado.
Por que os últimos dígitos dos números de Fibonacci se repetem?
O último dígito é o resto da divisão por 10, e módulo 10 o período de Pisano é 60. Por isso os últimos dígitos da sequência de Fibonacci recomeçam a cada 60 posições.
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/numth/pisano-period \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"m":10}'const res = await fetch("https://api.kit.forhosting.com/numth/pisano-period", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"m": 10
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/numth/pisano-period",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"m": 10
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/numth/pisano-period", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"m":10}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"m":10}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/numth/pisano-period", 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
{
"m": 10
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "numth.pisano_period",
"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_m | 1000000 |
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 a calculadora detecta o ciclo
O navegador e a API usam o mesmo núcleo determinístico.
Como usar o resultado em cálculos modulares de Fibonacci
Para fluxos reproduzíveis, armazene o m enviado e o pisano_period retornado; por isso, a resposta inclui os dois campos. Cada solicitação custa US$ 0,002.
Perguntas técnicas
Posso informar zero ou um módulo negativo?
Não. Um módulo menor que 1 é inválido e retorna um erro invalid_input.
Quanto custa uma solicitação de API?
Cada solicitação custa US$ 0,002. O cálculo não tem cobrança variável por termo.