You are on page 1of 10

Como Determinar se um Nmero

Primo
Os nmeros primos so aqueles que so divisveis apenas por 1 e por eles
mesmos. Os outros so chamados de nmeros compostos. Para testar se um
nmero primo, existem vrias opes. Alguns desses mtodos so
relativamente simples mas so inviveis para valores altos. Outros testes, que
so geralmente usados para nmeros maiores, so na verdade algoritmos
probabilsticos que podem, s vezes, dar a resposta errada. Veja abaixo como
testar um nmero para saber se ele primo ou composto.

Mtodo 1 de 3: Usando diviso por tentativa


A diviso por tentativa o mtodo mais simples para testar a primalidade. Para
nmeros pequenos, ele tambm o teste mais rpido. Ele baseado na
definio dos nmeros primos: um nmero primo quando ele possuir apenas
dois divisores naturais diferentes, o 1 e ele mesmo.

1. 1
Considere n como o nmero a ser testado. No mtodo da diviso por
tentativa, voc divide o nmero dado por todos os seus divisores inteiros
possveis. Para valores maiores de n, como n = 101, invivel dividi-lo por
todos os inteiros menores que ele. Felizmente existem vrios truques para
diminuir o nmero de fatores que precisaro ser testados.

2. 2

Determine se "n" par. Todos os nmeros pares so divisveis por 2, por


isso, se n for par, voc pode automaticamente consider-lo como composto.
Para determinar rapidamente se um nmero par, basta observar o ltimo
dgito dele. Se esse dgito for 2, 4, 6, 8 ou 0, o nmero par, o que faz dele um
nmero composto.

A nica exceo para essa regra o prprio nmero 2, pois ele divisvel
apenas por 1 e por ele mesmo, e essa a definio dos nmeros primos. Logo,
2 primo.

3. 3
Divida o "n" por cada nmero entre 2 e n-1. Um nmero primo no tem
divisores a no ser ele mesmo e 1, logo, esses divisores inteiros so
necessariamente menores que os seus produtos, verificar todos os nmeros
menores que n e maiores que 2 vai determinar se o "n" primo. Comeamos
aps o 2 porque os nmeros pares (que so divisveis por 2) no so primos.
Esse est longe de ser o mtodo mais eficiente de fazer esse teste, mas, como
veremos abaixo, existem outras estratgias.

Por exemplo, se fossemos usar esse mtodo para determinar se o 11 primo,


precisaramos dividir ele por 3, 4, 5, 6, 7, 8, 9 e 10, sempre verificando se a
resposta inteira. Como nenhum desses nmeros divide 11 de forma inteira,
podemos dizer que ele primo.

4. 4
Para ganhar tempo, teste apenas at sqrt(n), arredondando para
cima. Testar todos os nmeros entre 2 e n-1 pode demorar bastante. Por
exemplo, se fossemos verificar se o 103 primo usando esse mtodo,

precisaramos dividir ele por 3, 4, 5 ,6 ... etc.. at o 102! Por sorte, no


necessrio dividir por todos esses fatores. S necessrio dividir pelos
divisores que esto entre 2 e a raiz de n. Se a raiz de n no for um nmero
inteiro, arredonde para cima e teste at esse nmero. Veja abaixo a explicao.

Vamos examinar os divisores de 100. 100 = 1 100, 2 50, 4 25, 5 20, 10


10, 20 5, 25 4, 50 2, e 100 1. Perceba que depois de 10 10, os
divisores so os mesmos de antes. No caso geral, podemos ignorar os fatores
maiores que a sqrt(n) por que eles so apenas agrupamentos de divisores
menores que sqrt(n).

Vejamos um exemplo simples. Se n = 37, no precisamos testar todos os


nmeros a partir de 3 at o 36 para determinar se n primo. Precisamos
apenas dividir de 2 at a sqrt(37), arredondando para cima.

sqrt(37) = 6.08, ento arredondamos para 7.

37 no divisvel de forma inteira por 3, 4, 5, 6, ou 7, ento podemos dizer com


segurana que ele primo.

5. 5
Para gastar ainda menos tempo, verifique apenas os fatores primos.
possvel tornar o processo de diviso por tentativa ainda mais rpido ao
eliminar os fatores que no forem nmeros primos. Por definio, todo nmero
composto pode ser expressado como o produto de dois ou mais primos. Por
isso, podemos diminuir ainda mais a nossa lista, verificando apenas os
divisores primos entre 2 e sqrt(n).

Isso significa que todos os fatores pares, que so mltiplos de nmeros primos,
podem ser omitidos.

Por exemplo, vamos tentar determinar se 103 primo ou no. A raiz quadrada
de 103 arredondada para cima 11. Os nmeros primos entre 2 e 11 so 3, 5
e 7 e 11. J os nmeros 4, 6, 8 e 10 so pares e o 9 um mltiplo de 3, que
um nmero primo, ento podemos omiti-los. Ao fazer isso, nos diminumos a
lista de fatores que precisam ser testados para apenas 4 nmeros!

Nenhum dos nmeros 3, 5, 7 ou 11 divide o 103 de forma inteira, ento


sabemos que o 103 primo.
Anncio

Mtodo 2 de 3: Usando o pequeno teorema de Fermat


Em 1640, o matemtico francs Pierre de Fermat descobriu um teorema (que
agora recebeu o seu nome) que pode ajudar muito a definir se um nmero
primo. Tecnicamente, o teste dele para os nmeros compostos, no primos.
Isso acontece porque o teste pode determinar com segurana se um numero
dado composto ou no, mas pode dizer apenas com certa preciso de esse
nmero primo.[1] Esse teorema til quando a diviso por tentativa for
invivel e quando quando uma lista dos nmeros que so excees do teorema
estiver disponvel.

1. 1
Considere n como o nmero a ser testado. Esse teste de primalidade
usado para determinar se um nmero dado primo. Entretanto, como dito
acima, o teorema s vezes identifica nmeros compostos como primos.
importante saber e estar preparado para verificar a resposta, veja abaixo.

2. 2
Escolha qualquer nmero no intervalo [2, n-1]. O nmero exato que voc
escolhe no importante, pois o intervalo inclu os nmeros 2 e n-1 como
escolhas vlidas.

Como exemplo, vamos tentar determinar se o 100 primo ou no. Vamos usar
o 3 como nosso valor, pois ele est entre 2 e n-1.

3. 3
Calcule an (mod n). O clculo dessa expresso requer um certo conhecimento
do sistema matemtico chamado de aritmtica modular. Nela, os nmeros
voltam para zero ao alcanarem um certo valor, chamado de mdulo. Pense
nisso como se fosse um relgio: uma hora depois da meia noite 1 da manh,
no 13 h, ou seja, o tempo voltou para o seu ponto inicial. O modo
especificado pela notao (mod n). Nesse passo, voc precisar calcular
'an(mod n).

Uma outra forma de fazer isso calculando n, dividir o resultado por n e usar o
resto da diviso. Calculadoras com a funo mdulo [2] podem ser muito teis
aqui, pois eles podem fazer esse clculo instantaneamente, mesmo quando os
nmeros forem grandes.

Se usarmos uma calculadora no nosso exemplo, veremos que 3 100/100 tem um


resto 1. Por isso, 3100 (mod 100) 1.

4. 4
Se voc for resolver mo, use a notao exponencial para facilitar. Se
voc no tiver acesso uma calculadora com a funo mdulo, use a notao
exponencial para facilitar o processo. Veja abaixo:

No nosso exemplo, precisamos calcular 3100 vezes o mdulo de 100. 3100 um


nmero muito grande:
515,377,520,732,011,331,036,461,129,765,621,272,702,107,522,001. To
grande que fica difcil trabalhar com ele. Em vez de usar essa resposta de 48
dgitos para 3100, vamos represent-lo como uma notao
exponencial:(((((((32)*3)2)2)2)*3)2)2. Lembre-se que elevar um nmero em
notao exponencial a um expoente a mesma coisa de multiplicar os
expoentes: ((xy)z= xyz).

Agora vamos determinar o resto. Comece resolvendo (((((((32)*3)2)2)2)*3)2)2 no


parntese mais interior e continue em direo ao exterior, dividindo por 100 a
cada passo. Quando tivermos um resto, ns usaremos ele para o prximo
passo, e no a resposta. Veja abaixo:

(((((((9)*3)2)2)2)*3)2)2, 9/100 no tem resto, ento vamos continuar.

((((((27)2)2)2)*3)2)2 - 27/100 no tem resto, ento vamos continuar.

(((((729)2)2)*3)2)2 , 729/100 = 7 com resto 29. Ento ns vamos fazer o prximo


passo usando esse nmero, e no o 729.

((((292=841)2)*3)2)2, 841/100 = 8 com resto 41. Usaremos nosso resto


novamente no prximo passo.

(((412 = 1681)*3)2)2, 1681/100 = 16 com resto 81. Usaremos 81 para o prximo


passo.

((81*3 = 243)2)2, 243/100 = 2 com resto 43. Aqui usaremos o 43.

(432 = 1849)2, 1849/100 = 18 com resto 49. Usaremos o 49 no prximo passo.

492 = 2401, 2401/100 = 24 com resto 1. Nosso ltimo resto 1. Em outras


palavras, 3100 (mod 100) = 1. Perceba que ns obtivemos a mesma resposta
que a calculadora deu no passo anterior!

5. 5
Verifique se an (mod n) = a (mod n). Se no, n composto. Se sim, ento n
provavelmente, mas no com certeza, primo. Repetir o teste com valores
diferentes pode melhorar a confiabilidade resultado, apesar de existirem raros
nmeros compostos que satisfazem a condio de Fermat para todos os
valores de a. Eles so chamados de nmeros de Charmichael, o menor deles
561.

No nosso exemplo, 3100 (mod 100) = 1 e 100 (mod 100) = 0. Como 1 =/= 0,
podemos dizer que 100 composto.

6. 6

Use uma lista de nmeros de Carmichael para garantir. Saber quais so os


nmeros Carmichael pode te poupar bastante tempo. Em geral, esses nmeros
so na forma (6k + 1)(12k + 1)(18k + 1) com os fatores inteiros de k em cada
fator sendo primos..[3] Listas online dos nmeros de Carmichael podem ser
extremamente teis quando voc for utilizar o Pequeno Teorema de Fermat
para definir a primalidade de um nmero.

Mtodo 3 de 3: Usando o teste de Miller-Rabin


O teste de Miller-Rabin parecido com o Pequeno Teorema de Fermat, mas
ele funciona melhor com excees, como os nmeros de Carmichael.[4]

1. 1
Considere n" como um nmero mpar que voc deseja testar. Como nos
mtodos acima, a varivel n representar o nmero que queremos determinar
a primalidade.

2. 2
Expresse n-1 na forma 2s d onde d mpar. Para que n seja primo, ele
precisa ser mpar, ento n-1 deve ser par. Por esse motivo, n-1 pode ser
representado como uma potncia de 2 vezes um nmero primo: 4 = 2 2 1, 80
= 24 5, e assim por diante. Expresse dessa forma o valor n -1.

Supondo que queremos saber se n = 321 primo. 321 - 1 = 320, que podemos
expressar como 26 5.

Nesse caso, n = 321 conveniente. Se n fosse maior, como 371, por exemplo,
seria necessrio um valor maior de d, o que poderia complicar o processo
depois: 371 - 1 = 370 = 21 185

3. 3
Escolha um nmero aleatrio "a" entre 2 e n - . O nmero exato que voc
escolhe no, ele precisa apenas ser maior que 1 e menor que n.

No nosso exemplo n = 321, vamos escolher a = 100.

4. 4
Calcule ad (mod n). Se ad = 1 ou -1 (mod n), ento n pasa no teste de MillerRabin e provavelmente primo. Assim como o Pequeno Teorema de Fermat,
esse teste no pode apontar nmeros primos com absoluta certeza se ele for
executado apenas uma vez.

No nosso exemplo n = 321, ad (mod n) = 1005 (mod 321). 1005 =


10,000,000,000 (mod 321) = 313. Ns precisaramos usar uma calculadora ou
o truque do expoente, mostrado anteriormente, para achar o resto de 100 5/321.

Como ns ainda no obtivemos 1 ou -1, no podemos dizer que n


provavelmente primo ainda. Entretanto, ainda h o que fazer, veja abaixo.

5. 5
Se o resultado no for 1 ou -1, calcule a2d, a4d, ... e assim por diante
at a2s-1d. Calcule a elevado a d vezes potncias de 2 at 2s-1. Se um desses
nmeros for 1 or -1 (mod n), ento n passa no teste de Miller-Rabin e
provavelmente um nmero primo. Se voc descobrir que n no passou no

teste, verifique sua resposta (veja abaixo). Se n no passar em nenhum desses


testes, ele composto.

Lembre-se de que, no nosso exemplo, o valor do a 100, o de s 6 e o valor


de d 5. Ns continuaramos o teste da seguinte forma:

1002d = 10 = 1 1020.

1 1020 (mod 321) = 64. 64 =/= 1 ou -1. Ento continuamos.

1004d = 20 = 1 1040.

1 1040 (mod 321) = 244. 244 =/= 1 or -1.

Aqui podemos parar. s - 1 = 6 - 1 = 5. Ns chegamos em 4d = 22 e no existem


mais potncias de 2 vezes d abaixo de 5d. Como nenhum dos nossos clculos
deu 1 ou -1, podemos dizer com segurana que n = 321 composto.

6. 6
Se n passar no teste de Miller-Rabin, repita o processo para outros
valores de a. Se voc descobrir que o seu valor de n primo, tente de novo
com um outro valor aleatrio para a para melhorar a confiabilidade do resultado
do teste. Se n realmente primo, ele vai passar no teste para qualquer outro
valor de a. Se n for composto, ele no vai passar em pelo menos trs quartos
dos valores de a. Isso d a esse mtodo uma confiabilidade maior que o
Pequeno Teorema de Fermat oferece, onde certos nmeros compostos (os
nmeros de Carmichael) podem passar para qualquer valor de a.

Dicas

A diviso por tentativa mais lenta do que os mtodos mais sofisticados


quando os nmeros so maiores, mas ela ainda um bem eficiente para
valores pequenos. Mesmo durante o teste de primalidade de nmeros maiores,
comum verificar alguns fatores pequenos antes de usar mtodos mais
avanados.

Os 168 nmeros primos menores que 1000 so: 2, 3, 5, 7, 11, 13, 17, 19, 23,
29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109,
113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197,
199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283,

293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389,
397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487,
491, 499, 503, 509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599,
601, 607, 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691,
701, 709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811,
821, 823, 827, 829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911, 919,
929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997

[5]