Calculadora de números primos
Resultado
Número de divisores
- Primo anterior
- 97
- Próximo primo
- 97
Um número primo é um número inteiro maior que 1 cujos únicos divisores positivos são 1 e ele mesmo. Dois, três, cinco, sete, onze e treze são primos. Quatro não é, porque 2 o divide; nove não é, porque 3 o divide; um também não é, e a razão disso é uma definição e não um cálculo — o um tem um único divisor, então ele não cumpre o requisito de ter exatamente dois. Esta página responde à pergunta de sim ou não com um selo, informa o número de divisores que decidiu a questão e dá o primo mais próximo de cada lado. A contagem de divisores é o teste inteiro: um primo tem exatamente dois divisores e um número composto tem mais, então o número da primeira linha é ao mesmo tempo a evidência e a resposta. Vale a pena ter os vizinhos porque eles respondem à pergunta que as pessoas realmente fazem em seguida. Se um número não é primo, a continuação útil é saber quais são os primos mais próximos, o que importa quando você está escolhendo um módulo ou o tamanho de uma tabela hash e quer um primo perto de um número que já tem em mente. Os dois vizinhos são inclusivos: 97 é primo, então o primo anterior e o próximo primo dele são ambos 97. Isso é deliberado, e não um descuido, já que uma regra como estritamente abaixo deixaria o caso primo sem nada para imprimir. Um caso fica fora da faixa que a página aceita: o próximo primo depois de um milhão é 1.000.003, então uma pergunta feita dentro da faixa pode ter uma resposta fora dela, e a página a informa em vez de recusá-la.
Os dois vereditos, com a contagem de divisores por trás de cada um
| Veredito | Contagem de divisores | Exemplo |
|---|---|---|
| Primo | exatamente 2 divisores | 97 |
| Composto | 3 divisores ou mais | 100 |
Duas linhas, e juntas elas cobrem todo número inteiro acima de 1. A coluna do meio é o teste: exatamente dois divisores significa primo, três ou mais significa composto, e nada mais precisa ser verificado. É por isso que o selo no painel de resultado lê o mesmo número que a linha ao lado imprime, em vez de rodar um segundo cálculo — com um único critério não há como os dois discordarem. Os exemplos são um de cada: 97 tem apenas 1 e 97 como divisores, enquanto 100 tem nove divisores, porque 2, 4, 5, 10, 20, 25 e 50 também o dividem. Repare que as contagens são números inteiros comuns, impressos por extenso e nunca abreviados; e como a maior contagem de divisores possível abaixo de um milhão é 240, elas também nunca chegam a exibir um separador de milhar.
Quatro números, com o primo mais próximo de cada lado
| Número | Primo anterior | Próximo primo |
|---|---|---|
| 25 | 23 | 29 |
| 97 | 97 | 97 |
| 100 | 97 | 101 |
| 1000000 | 999983 | 1000003 |
Leia a segunda linha primeiro, porque é a surpreendente: 97 é primo, e os dois vizinhos dele voltam como 97. É a regra inclusiva em ação — o maior primo que não passa de 97 é 97, e o menor primo que não fica abaixo de 97 também é 97. A regra existe para que o caso primo tenha alguma resposta; uma desigualdade estrita deixaria essas duas linhas vazias exatamente nas entradas em que o veredito é mais certo. A primeira linha é um número no meio de um intervalo: 25 fica entre 23 e 29, quatro de distância para cima e dois para baixo. A terceira linha tem 100 entre 97 e 101, e a quarta é o teto da entrada, onde o próximo primo é 1.000.003 — maior que qualquer número que a página aceita, e informado mesmo assim, porque a resposta a uma pergunta feita dentro da faixa pode ficar fora dela. O maior salto da tabela é o de vinte na última linha, entre 999.983 e 1.000.003 — maior que os outros, que é o que os intervalos entre primos fazem conforme os números crescem, devagar e de forma irregular, sem nenhum calendário. Aqui também vale uma nota de grafia: os números das células desta tabela são impressos como saem da calculadora, sem separador de milhar — é por isso que a última linha mostra 1000000, 999983 e 1000003 —, enquanto no texto acima as mesmas quantidades seguem a grafia do idioma, como em 1.000.003.
Fórmula
n é primo <=> d(n) = 2; previousPrime(97) = 97; nextPrime(97) = 97; nextPrime(1.000.000) = 1.000.003
- n
- O número inteiro que está sendo testado — de 2 a 1.000.000. O limite inferior é deliberado, e não herdado: o primo anterior de 1 não existe, então uma página que aceitasse 1 teria uma linha que ela não conseguiria preencher com honestidade. Se 1 é primo é uma questão de definição e é respondida nas perguntas abaixo, não pela calculadora
- d(n)
- O número de divisores positivos, que é a primeira linha do resultado e a única evidência em que o veredito se apoia. d(n) = 2 significa que exatamente dois números o dividem, que é a definição de primo. A contagem vem da rotina compartilhada de teoria dos números, então é o mesmo valor que a página de fatores e a página de fatoração em primos informam para a mesma entrada
- d(n) = 2
- O teste em si, enunciado como uma equação. É uma equivalência, e não uma aproximação: um número é primo se e somente se tem exatamente dois divisores. Para 97 os divisores são 1 e 97, então a contagem é 2 e o selo lê primo. Para 100 eles são 1, 2, 4, 5, 10, 20, 25, 50 e 100, então a contagem é 9 e o selo lê composto
- previousPrime(n)
- O maior primo que é menor ou igual a n. Ele é inclusivo no topo, então quando n é primo a resposta é o próprio n. Para 100 a resposta é 97; para 25 é 23; para 97 é 97. O intervalo é fechado porque a alternativa exigiria uma regra para o que imprimir quando n já é primo, e uma linha em branco num painel de resultado é lida como uma falha, e não como um fato
- nextPrime(n)
- O menor primo que é maior ou igual a n, com a mesma regra inclusiva na base. Para 25 é 29, para 100 é 101, e para 97 é 97. Este pode sair da faixa da entrada: nextPrime(1.000.000) é 1.000.003, um primo maior que qualquer número que a página aceita, e ele é informado como resposta em vez de tratado como fora dos limites
- 1e6 to 1e6 + 100
- A vizinhança do teto da entrada, e por que é preciso um teste separado lá em cima. Os primos perto de um milhão são 999.983 e 1.000.003, então a busca a partir de 1.000.000 precisa olhar para além de um milhão em uma das direções. A rotina que conta divisores recusa argumentos acima de um milhão e lançaria um erro, então a busca de vizinhos usa um teste próprio, sem esse limite — e os dois precisam concordar onde quer que se sobreponham, que é o que as linhas de primo nos exemplos verificam
Escolher um módulo é a razão mais prática de querer um primo perto de um número que você já escolheu. O número de posições de uma tabela hash costuma ser primo, porque um módulo primo espalha chaves que compartilham um fator comum em vez de deixá-las colidir; uma tabela com 1.000 posições manda todos os múltiplos de 25 para as mesmas poucas posições, enquanto uma com 997 não faz isso. O mesmo instinto vale em criptografia, onde as chaves são construídas a partir de primos grandes e distantes entre si. Verificar se um número é primo também resolve perguntas de divisibilidade rapidamente: se um número não tem nenhum divisor primo até a sua raiz quadrada, ele não tem nenhum, e o selo responde isso em um passo em vez de por tentativa. Alguns quebra-cabeças são simplesmente sobre primalidade — primos gêmeos, as distâncias entre primos consecutivos e se um número dado é o produto de dois primos. Quando a pergunta acaba sendo sobre os fatores em si, a página de fatoração quebra o número em primos e é a parada natural seguinte; quando é sobre quais números dividem o seu, a página de fatores os lista todos; e quando o número testado não é primo e você quer saber de que ele é feito, a contagem de divisores desta página é a primeira pista, e não a resposta completa.
Exemplos resolvidos
Um primo: 97
- Teste os divisores de 97: 2 não o divide, e 3, 5 e 7 também não
- Pare na raiz quadrada: 10 × 10 = 100 já passou de 97, então não sobrou nada para testar — o próximo primo, 11, está além desse corte
- Os únicos divisores são 1 e 97, então a contagem é 2 e o número é primo
- O primo anterior é o próprio 97, porque 97 já é primo e a busca é inclusiva
- O próximo primo também é 97, pelo mesmo motivo
A entrada padrão, e a ilustração mais limpa da regra inclusiva. Os dois vizinhos voltam como o próprio número, o que à primeira vista parece que as linhas não fizeram nada. Fizeram: o maior primo que não passa de 97 é 97, e o menor primo que não fica abaixo de 97 também é 97. A alternativa — uma desigualdade estrita — deixaria essas duas linhas sem nada para imprimir exatamente nas entradas em que a página está mais segura, e uma linha em branco num painel de resultado é lida como erro. Este caso é também onde os dois testes independentes da página se encontram: a contagem de divisores diz 2, e a busca de vizinhos concorda que 97 é primo, e os dois chegam lá por código diferente.
Um número composto: 100
- 100 é par, então 2 o divide; ele termina em 00, então 4, 5, 10, 20, 25 e 50 também o dividem
- Os divisores são 1, 2, 4, 5, 10, 20, 25, 50 e 100 — nove deles
- Nove é mais que dois, então o selo lê composto, e não primo
- O maior primo menor ou igual a 100 é 97; o menor maior ou igual a ele é 101
- Os dois vizinhos ficam a um passo do número, que é a cara de um número composto no meio de um intervalo
O caso que mostra os vizinhos fazendo trabalho de verdade. Quando um número é composto, as duas linhas são a saída útil, porque respondem à pergunta que o leitor tem em seguida: se não é este número, qual é? Noventa e sete e cento e um são os primos mais próximos, e o 100 fica entre eles. A contagem de divisores igual a nove também merece um olhar — ela é ímpar, o que acontece exatamente quando o número é um quadrado perfeito, e 100 é 10 ao quadrado. Então um único olhar para a contagem já diz algo sobre a forma do número, antes de qualquer fatoração.
Um número logo depois de um primo: 25
- Os divisores de 25 são 1, 5 e 25 — três deles, porque o 5 se emparelha consigo mesmo
- Três é mais que dois, então 25 é composto
- Desça a partir de 25: 24, 23 — 23 é primo, então é o primo anterior
- Suba a partir de 25: 26, 27, 28, 29 — 29 é primo, então é o próximo primo
- A distância aqui é de seis no total: 23 e 29 ladeiam o 25
Um quadrado perfeito, que é a razão de a contagem de divisores ser ímpar, e um caso em que os dois vizinhos estão a distâncias visivelmente diferentes — dois abaixo e quatro acima. A contagem igual a três mostra também por que dois é o limiar certo, e não uma contagem de fatores primos: 25 tem um único fator primo, o 5, mas não é primo, e a contagem de divisores capta isso sem precisar olhar para a fatoração.
Limitações
A entrada precisa ser um número inteiro de 2 a 1.000.000. Zero e um são recusados, e o um é recusado por um motivo diferente do zero: ele é uma questão de definição, e não um número fora da faixa, e o primo anterior de 1 não existe. Números negativos são recusados — a primalidade é uma propriedade dos inteiros acima de 1, e embora exista uma convenção para primos negativos em alguns ramos da matemática, esta página não adota nenhuma. Decimais são recusados em vez de arredondados. O teto de um milhão vale apenas para a entrada; as duas linhas de vizinhos podem legitimamente informar um primo fora dele, e o próximo primo depois de um milhão é 1.000.003, que é informado em vez de recusado. O teste por trás do veredito é a divisão por tentativa até a raiz quadrada, que é instantânea neste tamanho e desesperadora num número de vinte algarismos, e essa fronteira é uma propriedade do problema, não desta implementação. A página informa três números e um selo: não lista os divisores em si, não fatora um número composto, e testa um número por vez em vez de um intervalo. A tabela de referência abaixo tem linhas fixas em vez de responder à sua entrada. Por fim, um primo é informado como o próprio primo anterior e o próprio próximo primo, o que é uma escolha deliberada de intervalo inclusivo, e não duas linhas que não acharam nada.
Perguntas frequentes
- O 1 é um número primo?
- Não, e também não é um número composto. Um primo é definido como um número inteiro maior que 1 com exatamente dois divisores positivos, e o 1 tem apenas um divisor, então ele falha na definição nos dois sentidos. Isso é uma escolha deliberada, e não um descuido: se o 1 fosse contado como primo, a afirmação de que todo número tem exatamente uma fatoração em primos deixaria de ser verdadeira, porque você poderia multiplicar uma fatoração por 1 quantas vezes quisesse. Excluir o 1 é o que mantém esse teorema limpo. Como é uma questão de definição e não de aritmética, a página não aceita 1 como entrada — a resposta mora aqui.
- Por que o primo anterior e o próximo primo voltam como o próprio número?
- Porque as duas buscas são inclusivas. O primo anterior é o maior primo que não é maior que o seu número, e o próximo primo é o menor primo que não é menor que ele. Quando o número já é primo, ele satisfaz as duas descrições, então as duas linhas o informam. A alternativa seria uma desigualdade estrita, e aí uma entrada prima deixaria duas linhas sem nada para imprimir. Uma linha em branco num painel de resultado é lida como algo dando errado, e a página ficaria sem resposta justamente no caso em que tem mais certeza de si. A mesma convenção aparece no arredondamento, onde um número que já está na precisão pedida volta sem mudança.
- Por que o próximo primo pode ser maior que um milhão se a entrada não pode?
- Porque o teto é um limite sobre o que você pode perguntar, e não sobre o que a resposta pode ser. O próximo primo depois de 1.000.000 é 1.000.003, e recusar imprimi-lo significaria recusar responder a uma pergunta perfeitamente bem formulada sobre uma entrada que a página aceitou. Então a busca de vizinhos roda com um teste próprio, sem limite superior, enquanto a contagem de divisores continua usando a rotina compartilhada, que só cobre a faixa. Isso significa que duas partes da lógica decidem se um número é primo — uma limitada, outra não — e elas precisam concordar onde quer que se sobreponham, que é o que o exemplo do 97 verifica: a contagem diz 2, e a busca de vizinhos diz que 97 é primo.
- Para que serve um número primo, na prática?
- Para dimensionar coisas, principalmente. Tabelas hash costumam receber um número primo de posições, porque um módulo primo espalha chaves que compartilham um fator comum — uma tabela com 1.000 posições manda todos os múltiplos de 25 para as mesmas poucas posições, enquanto uma com 997 não faz isso. O mesmo raciocínio vale para qualquer contador que dá a volta: um comprimento de ciclo primo evita ressonância com padrões regulares dos dados. A criptografia é o outro grande uso, onde as chaves são construídas a partir de primos muito grandes e distantes entre si, e a segurança se apoia em quão difícil é fatorar o produto deles de volta nos dois primos de origem. Os usos menores estão por toda parte: conferir uma afirmação de divisibilidade, testar se um número é o produto de dois primos, e os quebra-cabeças clássicos sobre primos gêmeos e as distâncias entre primos consecutivos.
- Como a página decide, e quão segura ela é?
- Contando divisores, o que é exato e não probabilístico. Um número é primo se e somente se tem exatamente dois divisores positivos, então a contagem resolve a questão sem possibilidade de resposta errada e sem precisar confiar num teste que possa ser enganado. A contagem é feita por divisão por tentativa até a raiz quadrada, e é por isso que um milhão é o teto: passando disso o método fica lento, e não duvidoso. Para números muito maiores os métodos exatos são genuinamente inviáveis e usam-se testes probabilísticos, mas neste tamanho não há razão para aceitar nada menos que certeza, e a página não aceita.
- Por que a contagem de divisores aparece, e não só o veredito?
- Porque a contagem é a razão do veredito, e mostrá-la faz com que os dois nunca possam discordar — o selo não é um segundo cálculo, mas uma leitura do número impresso ao lado dele. Ela também é útil por si só. Uma contagem ímpar significa que o número é um quadrado perfeito, já que a raiz quadrada se emparelha consigo mesma em vez de com um divisor diferente. Uma contagem igual a 2 é a definição de primo. Uma contagem grande em relação ao tamanho do número diz que ele tem muitos fatores pequenos, que é o tipo de número que junta divisores depressa. E ela liga esta página às outras: a página de fatoração em primos informa a mesma contagem de divisores para a mesma entrada, calculando-a a partir dos expoentes, então as duas páginas se conferem.
Referências
- Prime Number — the definition, the divisor-count test, and why 1 is excluded by it — Wolfram MathWorld (United States)
- Prime Gaps — the distances between consecutive primes, and what the neighbourhood of a million looks like — Wolfram MathWorld (United States)
- Composite Number — the complement of the primes, and why 1 belongs to neither group — Wolfram MathWorld (United States)