Verificador de primo seguro
Verifica se um primo p é seguro, ou seja, se (p − 1)/2 também é primo: 23 é seguro porque sua metade, 11, é prima, o que faz de 11 um primo de Sophie Germain. A metade sempre aparece, para você conferir. 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
- Potência (W)
- 23
- Q
- 11
O verificador de primo seguro recebe um inteiro primo p e determina se o valor relacionado q = (p − 1) / 2 também é primo. Quando ambos são primos, p é um primo seguro e q é seu primo de Sophie Germain. Entradas compostas são rejeitadas em vez de receberem falso, mantendo a resposta fiel à definição e tornando erros de entrada visíveis em fluxos automatizados.
O que significa um primo ser seguro
Um primo seguro é um número primo p cujo valor associado q = (p − 1) / 2 também é primo. De forma equivalente, p pode ser escrito como 2q + 1 com q primo; esse q menor é chamado de primo de Sophie Germain. Por exemplo, 23 é seguro porque é primo e seu candidato metade é 11, que também é primo.
Já 13 é primo, mas não seguro, pois (13 − 1) / 2 é 6, um número composto. Este verificador mantém os dois testes separados. Primeiro, ele confirma a premissa fornecida por você: p precisa ser primo.
Só então calcula e testa q. O primo excepcional 2 é aceito, porém não é seguro: seu candidato é 0.5, que não é inteiro e, portanto, não pode ser primo. Esse tratamento segue a definição sem restringir silenciosamente entradas válidas a primos ímpares.
Como funciona a verificação determinística
A capacidade valida que p seja um inteiro entre 2 e o maior inteiro seguro do JavaScript. Depois executa um teste exato de primalidade com aritmética BigInt, verificações de divisibilidade por primos pequenos, exponenciação modular e um conjunto fixo de testemunhas Miller–Rabin determinístico em todo o intervalo suportado. Testemunhas fixas impedem que chamadas repetidas sigam caminhos diferentes ou forneçam apenas uma resposta probabilística.
Para um primo ímpar válido, subtrair um produz um inteiro par, então a divisão por dois é exata. O verificador aplica a mesma rotina de primalidade a q e retorna a decisão booleana. Todo cálculo ocorre localmente, sem rede, tabela externa, aleatoriedade ou relógio.
A saída numérica permanece exata porque p e q ficam limitados a valores representáveis com segurança por números JavaScript.
Como usar o resultado em estudos e software
Use o verificador quando a distinção entre um primo comum e um primo seguro for a questão central. Em aulas de teoria dos números, ele demonstra de forma concisa a relação entre o par e mostra q para que estudantes confiram a aritmética. Na geração de dados de teste, ele pode validar um candidato escolhido em outro sistema antes de incluí-lo em um exercício de protocolo ou benchmark.
A capacidade ajuda na validação e no ensino, porém não gera primos, não fatora compostos, não produz certificados portáteis e não garante adequação criptográfica. Parâmetros criptográficos grandes costumam exceder o limite de inteiro seguro e exigem bibliotecas especializadas e revisão do protocolo.
Casos de uso
Conferir exercícios de teoria dos números
Teste um primo seguro proposto e mostre o candidato de Sophie Germain correspondente para revisar cada parte da definição.
Validar dados de teste gerados
Confirme que um primo escolhido por outro gerador determinístico é realmente seguro antes de salvá-lo em testes de protocolos ou algoritmos.
Separar primos de primos seguros
Classifique valores já primos pela primalidade do candidato metade, sem confundir entrada composta com um resultado negativo válido.
Perguntas frequentes
Quanto custa o verificador de primo seguro?
A mesma verificação determinística pode ser executada gratuitamente na interface do navegador.
Por que 23 é um primo seguro?
23 é primo, e (23 − 1) / 2 é igual a 11, que também é primo.
Posso usar isto para gerar primos seguros criptográficos?
Não. A ferramenta apenas verifica um valor no intervalo de inteiros seguros; não gera parâmetros nem os certifica para um protocolo criptográfico.
Por que 13 não é um primo seguro?
13 é primo, mas (13 − 1)/2 dá 6, que é composto. Um primo seguro exige que os dois números sejam primos, então a resposta é não, mesmo que o número digitado seja primo.
O que acontece se eu digitar um número que não é primo?
Ele é recusado com uma mensagem em vez de um simples não, porque um número composto não pode ser primo seguro. Corrija o número e tente de novo, sem tratar isso como um resultado negativo.
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/safe-prime \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"p":23}'const res = await fetch("https://api.kit.forhosting.com/numth/safe-prime", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"p": 23
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/numth/safe-prime",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"p": 23
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/numth/safe-prime", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"p":23}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"p":23}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/numth/safe-prime", 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
{
"p": 23
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "numth.safe_prime",
"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
O resultado devolve p, o q calculado e o booleano direto safe_prime.
O que significa um primo ser seguro
A resposta repete p, informa q e define safe_prime como verdadeiro ou falso, evitando que você tenha de reconstruir o valor intermediário.
Como funciona a verificação determinística
A mesma entrada sempre gera o mesmo resultado JSON. Se p for composto, o processamento para com um erro invalid_input que identifica a premissa inválida; safe_prime não é retornado como falso, pois isso sugeriria incorretamente que um composto seria um primo não seguro.
Como usar o resultado em estudos e software
No código da aplicação, trate invalid_input como uma correção necessária na chamada, não como resultado negativo nem falha transitória para repetir. Uma resposta bem-sucedida com safe_prime falso informa que p passou no teste, mas q não; verdadeiro indica que ambos passaram. A mesma implementação funciona gratuitamente no navegador e por automação de API a US$ 0,002 por solicitação, com regras idênticas de entrada e saída.
Perguntas técnicas
O que acontece se p for composto?
A solicitação retorna invalid_input porque primos seguros só são definidos para p primo. Ela não retorna safe_prime falso para uma entrada composta.
2 é considerado um primo seguro?
Não. Embora 2 seja primo, (2 − 1) / 2 é 0.5, que não é um primo inteiro; por isso, safe_prime é falso.