Testes de primalidade: probabilísticos e determinístico

Livre

0
0
10
1 year ago
Preview
Full text

  Testes de primalidade: probabil´ısticos e determin´ısticos Carlos Gustavo T. de A. Moreira, Nicolau C. Saldanha 25 de abril de 2011

  O problema de distinguir n´ umeros primos de compostos e de decom- por esses ´ ultimos em seus fatores primos ´e conhecido como sendo um dos mais importantes e ´ uteis na aritm´etica. . . . . . a dignidade da pr´opria ciˆencia parece requerer que todos os meios poss´ıveis sejam explorados para a solu¸c˜ ao de um problema t˜ao elegante e t˜ao celebrado.

  Karl Friedrich Gauß, Disquisitiones Arithmeticae, 1801

1 Introdu¸ c˜ ao

  N˜ ao se conhece nenhuma f´ ormula simples para gerar primos arbitrariamente gran- des. Uma palavra imprecisa mas importante nesta frase ´e “simples”. Existem f´or- mulas que geram n´ umeros primos, mas que s˜ao t˜ao complicadas que n˜ao ajudam muito nem a gerar n´ umeros primos explicitamente nem a responder perguntas te´o- ricas sobre a distribui¸c˜ ao dos primos. Um exemplo de f´ ormula para p n , o n-´esimo primo, ´e         X

  1 1 µ(d) p = log ,     +

  n 1 − − d

  log 2

  2

  2 − 1

  d|P n−1

  onde P n−1 = p

  1 p 2 n−1 ; aqui µ ´e fun¸c˜ ao de M¨obius: µ(n) = 0 se n for m´ ultiplo de

  · · · p

  k se n for o produto de k primos distintos.

  algum quadrado de primo e µ(n) = (−1) Deixamos a demonstra¸c˜ ao a cargo do leitor. Outra f´ ormula ´e n n−1 n−1

  2

  2

  2

  p

  n = ⌊10 c⌋ − 10 ⌊10 c⌋,

  onde X ∞ p n c = = 0.0203000500000007 . . . . n

  2

  10

  n=1

  A inutilidade desta ´ ultima f´ ormula vem do fato que para calcular c devemos en- contrar todos os primos; a f´ ormula se tornaria mais interessante se existisse outra interpreta¸c˜ ao para o n´ umero real c, o que parece muito improv´ avel. Mills ([6]) n

  3

  tamb´em provou que existem n´ umeros reais A > 1 tal que ⌊A ⌋ ´e primo para todo n ∈ N.

  Um tipo de f´ ormula para primos, de certa forma mais intrigante, s˜ao polinˆ omios de coeficientes inteiros em S vari´ aveis com a seguinte propriedade quase m´agica: a

  S intersec¸c˜ ao da imagem de N com N ´e exatamente o conjunto dos n´ umeros primos.

  S

  Note que se tomarmos um ponto de N “ao acaso”, o valor do polinˆ omio neste ponto quase certamente ser´ a negativo; assim, ´e dif´ıcil usar o polinˆ omio para gerar primos. A t´ıtulo de curiosidade, vejamos um exemplo de polinˆ omio com estas propriedades; aqui S = 26, o valor do polinˆ omio ´e P , as vari´ aveis chamam-se

  a, b, . . . , z e A, B, . . . , N s˜ao express˜oes auxiliares:

  2

  2

  2

  2

  ), P = (k + 2)(1 − A − B − C − · · · − N A = wz + h + j − q, B = (gk + 2g + k + 1)(h + j) + h − z,

  3

  2

  2 C = 16(k + 1) (k + 2)(n + 1) ,

  • 1 − f D = 2n + p + q + z − e,

  3

  2

  2 E = e (e + 2)(a + 1) ,

  • 1 − o

  2

  2

  2 F = (a ,

  − 1)y + 1 − x

  2

  4

  2

  2 G = 16r y (a ,

  − 1) + 1 − u

  2

  2

  2

  2

  2 H = ((a + u (u ,

  − a)) − 1)(n + 4dy) + 1 − (x + cu)

  2

  2

2 I = (a ,

  − 1)l + 1 − m J = ai + k + 1 − l − i,

  K = n + l + v − y,

  2 L = p + l(a − n − 1) + b(2an + 2a − n − 2n − 2) − m,

  2 M = q + y(a − p − 1) + s(2ap + 2a − p − 2p − 2) − x,

2 N = z + pl(a − p) + t(2ap − p − 1) − pm.

  Algumas observa¸c˜ oes simples: a ´ unica forma de P ser positivo ´e se A = B = · · · = N = 0; neste caso seu valor ser´ a k + 2. Vemos assim que para produzir um n´ umero primo P com este polinˆ omio devemos antes de mais nada tomar k = P − 2. As express˜ oes auxiliares viram equa¸c˜ oes: como A = 0 temos q = wz + h + j. Assim, dado k para o qual k + 2 ´e primo, precisamos procurar valores para as outras letras que satisfa¸cam estas equa¸c˜ oes. Estes valores de certa forma codificam uma demonstra¸c˜ ao de que P = k + 2 ´e primo.

  Uma quest˜ ao relacionada com a de gerar n´ umeros primos ´e a de testar se um determinado n´ umero ´e primo. Com o advento dos computadores, a partir da d´e- cada de 60, surgiram in´ umeras tentativas de se obter um algoritmo eficiente para o teste de primalidade de um n´ umero. A relevˆ ancia desse problema tem crescido imensamente em anos recentes devido ` a utiliza¸c˜ ao intensa de n´ umeros primos em algoritmos de criptografia, como os algoritmos RSA e El Gammal para criptografia p´ ublica. Dessa forma o problema do teste de primalidade se tornou um importante problema para a ciˆencia da computa¸c˜ ao te´ orica. Sobre esse ponto de vista duas coisas s˜ ao requeridas: um certificado de prova de que o algoritmo realmente produz a resposta correta; e uma medida da eficiˆencia do algoritmo, isto ´e, qu˜ ao bem o algoritmo faz uso dos recursos computacionais (como o tempo ou n´ umero de passos executados, espa¸co ou mem´ oria utilizada) em fun¸c˜ ao do tamanho da entrada do problema para a obten¸c˜ ao da solu¸c˜ ao.

  Existe um algoritmo bastante simples, devido ao matem´atico grego Erat´ostenes (ca. 240 A.C.), para testar se qualquer inteiro positivo n ´e primo: calcule o resto da

  √ n. Se o resto for 0 em algum caso divis˜ao de n por cada inteiro m com 2 ≤ m ≤ ent˜ ao n ´e composto e encontramos um divisor; se isto nunca ocorrer, n ´e primo.

  O inconveniente deste algoritmo ´e que ele ´e muito lento. O tamanho da entrada do algoritmo para um dado n´ umero n ´e o tamanho da sua codifica¸c˜ ao em bits,

  k k+1

  que ´e aproximadamente k = log n pois 2 . Portanto, em termos do ≤ n < 2

  2

  √

  k/2

  tamanho da entrada k, temos que o n´ umero de opera¸c˜ oes ´e O( n) = O(2 ), ou seja, o algoritmo tem complexidade de tempo exponencial no tamanho da entrada. Veremos neste trabalho outros testes de primalidade mais r´ apidos que usam um pouco mais de teoria dos n´ umeros.

2 Fundamentos

  Dados dois inteiros d e a, dizemos que d divide a ou que d ´e um divisor de a ou ainda que a ´e um m´ ultiplo de d e escrevemos d | a se existir q ∈ Z com a = qd. Sejam a, n ∈ Z, n > 0: denotamos o resto da divis˜ao de a por n por a mod n; em outras palavras, a mod n ´e o ´ unico inteiro entre 0 e n − 1 com n | (a − (a mod n)). Sejam a, b, n ∈ Z. Dizemos que a ´e congruente a b

  m´ odulo n, e escrevemos

  a ≡ b (mod n) se n | a − b, ou seja, se (a mod n) = (b mod n). Por exemplo, temos que 17 ≡ 3 (mod 7) e 10 ≡ −5 (mod 3). Pelo algoritmo de Euclides sabemos que dados a, b ∈ Z existem c, d ∈ Z com mdc(a, b) = ad − bc. Se mdc(a, n) = 1 existe portanto d ∈ Z com ad ≡ 1 (mod n) e dizemos que a ´e invert´ıvel m´odulo n.

  Definimos a fun¸c˜ ao de Euler ϕ por ϕ(n) = |{a ∈ Z; 0 < a ≤ n, mdc(a, n) = 1}| onde n ∈ Z, n > 0 e |X| denota o n´umero de elementos de X. Temos ϕ(1) =

  ϕ(2) = 1, e, para n > 2, 1 < ϕ(n) < n. Se p ´e primo, ϕ(p) = p − 1; mais geralmente

  k k k−1 k k−1

  ϕ(p ) = p pois (a, p ) = 1 se e somente se a n˜ao ´e m´ ultiplo de p e h´a p − p

  k

  m´ . Mais geralmente, temos ultiplos de p no intervalo 0 ≤ a < p Y

  1 ϕ(n) = n . 1 − p

  p|n

  Os ϕ(n) n´ umeros inteiros b , b , . . . , b formam um sistema completo de inver-

  1 2 ϕ(n)

  t´ıveis (s.c.i.) m´odulo n se para todo c ∈ Z, mdc(c, n) = 1, existe i, 0 < i < ϕ,

  (mod n). Equivalentemente (pelo princ´ıpio da casa dos pombos), com c ≡ b i b , b , . . . , b formam um s.c.i. m´ odulo n se e somente se mdc(b , n) = 1 para

  1 2 ϕ(n) i todo i e b (mod n) implicar i = j. i ≡ b j 1 , b

  2 , . . . , b um s.c.i. m´ odulo

  Lema 1 Sejam q, n ∈ Z, n > 0, mdc(q, n) = 1, e b ϕ(n) n. Ent˜ ao os inteiros qb

  1 , qb 2 , ...qb tamb´em formam um s.c.i. m´ odulo n.

  ϕ(n)

  Demonstra¸ c˜ ao: Como mdc(q, n) = mdc(b , n) = 1, temos mdc(qb , n) = 1. Por

  i i outro lado, se qb (mod n) temos b (mod n) e i = j. i ≡ qb j i ≡ b j

  Teorema 2 (Euler) Sejam a, n ∈ Z, n > 0, tais que (a, n) = 1. Ent˜ao

  ϕ(n)

  a ≡ 1 (mod n). Demonstra¸ c˜ ao: Seja b , b , . . . , b um s.c.i. m´odulo n. Pela proposi¸c˜ ao ante-

  1 2 ϕ(n)

  rior, os n´ umeros ab , ab , . . . ab tamb´em formam um s.c.i. m´ odulo n. Assim,

  1 2 ϕ(n)

  b

  1

  2

  1 2 (mod n)

  · b · · · b ϕ(n) ≡ ab · ab · · · ab ϕ(n) pois m´odulo n os dois lados tˆem os mesmos fatores a menos de permuta¸c˜ ao. Mas isto pode ser reescrito como

  ϕ(n)

  a (b ) (mod n)

  1 · b 2 · · · b ϕ(n) ) ≡ 1 · (b

1 · b

2 · · · b ϕ(n) ϕ(n)

  e isto implica a ≡ 1 (mod n). p

  Corol´ ario 3 (Fermat) Se p ´e primo ent˜ ao, para todo inteiro a, a ≡ a (mod p).

  p

  Demonstra¸ c˜ ao: Se p | a, ent˜ao a ≡ a ≡ 0 (mod p). Caso contr´ario, ϕ(p) =

  p−1 p p − 1, a ≡ 1 (mod p) e novamente a ≡ a (mod p).

  Se a, n ∈ Z com n > 0 e mdc(a, n) = 1, definimos a ordem de a m´odulo n,

  t

  denotado por ord n

  a, como o menor inteiro t > 0 tal que a ≡ 1 (mod n).

  t

  Proposi¸ c˜ ao 4 Temos que a n ≡ 1 (mod n) se, e s´o se, ord a | t. Em particular,

  para todo a com mdc(a, n) = 1 temos ord n a | ϕ(n). ord a k ord a n n

  Demonstra¸ c˜ ao: Como a

  ≡ 1 (mod n), para todo k ∈ N tem-se a ≡ 1

  t

  (mod n). Por outro lado, se a ≡ 1 (mod n), pelo algoritmo da divis˜ao existem

  n a e t = q ord n a + r. Portanto

  inteiros q e r tais que 0 ≤ r < ord

  t q ord n a+r ord n a q r r = a = (a ) (mod n).

  1 ≡ a · a ≡ a

  r

  Ou seja, a n

  a, temos que r = 0, i.e., ≡ 1 (mod n). Pela minimalidade de ord ord n a | t.

  A proposi¸c˜ ao acima nem sempre d´a a melhor estimativa para ord

  a. Assim,

  n

  por exemplo, para n = 8 temos ϕ(n) = 4 mas ord n a | 2 para todo a ´ımpar. Por outro lado, para n primo sempre existe uma raiz primitiva m´odulo n, isto ´e, um inteiro a com ord

  n a = n − 1 = ϕ(n) ([3]). Por exemplo, 2 ´e raiz primitiva

  m´odulo 5, pois ord

  5 2 = 4 = ϕ(5). Note que se a ´e raiz primitiva m´odulo p ent˜ao

  1 2 p−1

  a , a , . . . , a ≡ a ≡ 1 formam um s.c.i. m´odulo p.

  Ser´ a importante em alguns casos discutir se a ´e um quadrado m´odulo n, i.e., se

  2 existe b ∈ Z com b ≡ a (mod n).

  Proposi¸ c˜ ao 5 Seja p > 2, p primo.

  p−1 (a) Exatamente dentre os n´ umeros 1, 2, . . . , p − 1 s˜ao quadrados m´odulo p.

  2 p−1 2 (b) Considere a com mdc(a, p) = 1. Temos a p−1 2 ≡ ±1 (mod p). Al´em disso, a

  ≡ 1 (mod p) se e somente se a ´e quadrado m´odulo p. Demonstra¸ c˜ ao: Os quadrados (n˜ ao nulos) m´odulo p s˜ao p + 1 p − 1

  2

  2

  2

  2

  2

  2 1 , 2 , . . . , ( ) ) .

  ≡ (p − 1) ≡ (p − 2) ≡ (

  2

  2

  2

  2 Note que cada quadrado aparece exatamente uma vez na lista acima pois x

  ≡ y (mod p) implica p | (x + y)(x − y) e portanto x ≡ ±y (mod p). Isto completa a prova do item (a). p−1 2

  2

  2 Segue de Fermat que (a ) p−1 ≡ 1 (mod p). Ora, x ≡ 1 (mod p) implica x ≡ ±1 2

  2

  (mod p). Assim a ≡ ±1 (mod p). Se a ´e quadrado m´odulo p temos a ≡ b e p−1 2 p−1 a ≡ b ≡ 1 (mod p). p−1 2 Resta demonstrar que se a n˜ ao ´e quadrado m´ odulo p ent˜ ao a ≡ −1 (mod p). p−1 2 Uma forma de completar a demonstra¸c˜ ao ´e usar o fato que a congruˆencia X

  ≡

  p−1

  1 tem no m´aximo ra´ızes m´ odulo p (a demonstra¸c˜ ao ´e an´ aloga a de que um

  2

  polinˆ omio de grau k tem no m´aximo k ra´ızes reais; veja, por exemplo, [3]). Outra forma ´e usar a existˆencia de uma raiz primitiva: se c ´e uma raiz primitiva m´odulo p−1 p−1 2 2 p−1 p temos c e

  ≡ −1 (mod p) (de fato, c ≡ 1 (mod p) implica ord p c ≤

  2 k

  c n˜ ao ´e raiz primitiva). Mais geralmente, os n˜ ao quadrados s˜ ao da forma c , k ´ımpar.

3 O teste probabil´ıstico de Miller-Rabin

  A ideia ´e usar o pequeno teorema de Fermat para testar a primalidade de n:

  

n−1

  tomamos a, 1 < a < n, e calculamos a mod n. Se n for primo teremos

  n−1

  a mod n = 1; qualquer outro resultado indica que n ´e composto mesmo sem termos encontrado um fator de n.

  m

  Observe que para calcular a P mod n n˜ao precisamos calcular a · a · · · a, m vezes.

  i

  Se m = b

  2

  i , N = ⌊log m⌋, ent˜ao definimos 0≤i<N X

  2 i e k

  e k = b N −k+i 2 , c k = a mod n

  0≤i<k

  que pode ser reescrita recursivamente como e = 0, e k+1 = 2e k + b N −k , (

  2

  c mod n, b = 0,

  N −k k

  c = 1, c k+1 =

  2 ac mod n, b = 1.

  N −k k m

  Fazendo as contas desta forma encontramos c = a mod n com menos de 4 log m

  

N

  2

  2 opera¸c˜ oes envolvendo inteiros menores do que n . n−1

  Se a mod n = 1, por outro lado, n˜ ao demonstramos que n ´e primo; se n

  n−1

  for composto satisfazendo a ≡ 1 (mod n) dizemos que n ´e um pseudoprimo na base a. Pseudoprimos existem mas s˜ao raros (ver [4]): o menor pseudoprimo na base 2 ´e 341 = 11 · 31 e existem apenas 21 853 pseudoprimos na base 2 menores do

  10

  (contra 1 091 987 405 primos). Pomerance (melhorando um resultado que 2, 5 · 10 anterior de Erd˝ os) provou que se P π a (x) ´e o n´ umero de pseudoprimos at´e x na base a temos log x log log log x

  − 2 log log x

  P π a (x) ≤ x · e para x suficientemente grande (os logaritmos s˜ao todos na base e). Vale comparar este resultado com o Teorema dos N´ umeros Primos, conjecturado por Gauß e pro- vado independentemente por Hadamard e de la Vall´ee Poussin em 1896, que diz que o n´ umero de primos at´e x ´e x

  . π(x) ≈ log x

  Em particular, h´ a muito mais primos do que pseudoprimos. A proposi¸c˜ ao abaixo exibe uma fam´ılia infinita de pseudoprimos na base a (para qualquer a > 1 dado).

  2 Proposi¸ c˜ ao 6 Sejam a > 1 e p primo tal que p > 2 e p n˜ ao divide a

  − 1. Ent˜ao

  2p p p

  a a a + 1 − 1 − 1 n = =

  ·

  2

  a a + 1 − 1 a − 1 ´e um pseudoprimo na base a.

  p

  Demonstra¸ c˜ ao: Como a ± 1 s˜ao invers´ıveis m´odulo p e a ≡ a (mod p) pelo pequeno teorema de Fermat,

  p p

  a a + 1 − 1

  ≡ ≡ 1 (mod p) a + 1 a − 1 e verifica-se facilmente que estes n´ umeros s˜ao ´ımpares donde n ≡ 1 (mod 2p), ou

  2p n 2kp+1

  n = 2kp + 1 para k inteiro. Assim, como a = a = ≡ 1 (mod n) temos a

  2p k

  (a ) · a ≡ a (mod n).

  Uma ideia natural para contornar a dificuldade criada pela existˆencia de pseudo- primos ´e a de testar v´ arios valores de a. ´ E um fato interessante que existam alguns raros n´ umeros compostos n, chamados n´ umeros de Carmichael, com a propriedade

  

n−1

  de que se 0 < a < n e mdc(a, n) = 1 ent˜ao a ≡ 1 (mod n); os menores n´umeros de Carmichael s˜ ao:

  561 = 3·11·17, 1105 = 5·13·17, 1729 = 7·13·19, 2465 = 5·17·29, 2821 = 7·13·31; n˜ ao ´e dif´ıcil verificar que estes n´ umeros satisfazem a defini¸c˜ao: encorajamos o leitor a tentar. Foi demonstrado recentemente por Alford, Granville e Pomerance que se CN (x) ´e a quantidade de n´ umeros de Carmichael menores do que x ent˜ao

  

2/7

  CN (x) ≥ x para x suficientemente grande, o que implica na existˆencia de infinitos n´ umeros de Carmichael.

  Podemos refinar o conceito de pseudoprimo para definir pseudoprimos fortes na base a. Para definir quando n ´e um pseudoprimo forte na base a inicialmente

  k

  escrevemos n−1 = 2 ·b, com b ´ımpar. Se n > 2 ´e primo deve existir um menor valor j k

  b 2 b

  2

  de j para o qual (a ) ) ≡ 1 (mod n) (observe que por Fermat (a ≡ 1 (mod n)). j−1

  b b

  2 Se j = 0 isto significa que a )

  ≡ 1 (mod n); caso contr´ario temos (a ≡ −1 (mod n) j´ a que −1 ´e o ´unico valor de x diferente de 1 (m´odulo n) para o qual

  2

  x ≡ 1 (mod n). Assim, dizemos que n composto ´ımpar ´e um pseudoprimo forte j′

  b ′ b

  2

  na base a se ou a < k com (a ) ≡ 1 (mod n) ou existe j ≡ −1 (mod n). Claramente todo pseudoprimo forte na base a ´e um pseudoprimo na base a mas pseudoprimos fortes s˜ao mais raros do que pseudoprimos. Observe tamb´em que

  n−1

  se calcularmos a mod n pelo algoritmo sugerido no in´ıcio desta se¸c˜ao ent˜ao os k−j

  b

  2

  n´ umeros (a ) mod n ser˜ ao calculados de qualquer forma (s˜ao os c daquele

  N −j

  algoritmo); assim este novo teste tem custo computacional praticamente igual ao do primeiro teste.

  Existem infinitos pseudoprimos fortes em qualquer base a > 1: Pomerance pro- vou que, se SP π (x) ´e o n´ umero de pseudoprimos fortes na base a menores ou iguais

  a

  a x ent˜ ao 5 /14

  

(log x)

  SP π

  a (x) ≥ e

  para todo x suficientemente grande (ver [7]). N˜ ao existem “n´ umeros de Carmichael fortes”: para todo n´ umero composto ´ımpar n existe 0 < a < n com mdc(a, n) = 1 e tal que n n˜ ao ´e um pseudoprimo forte na base a. Melhor ainda, os valores de a que servem de testemunha para a n˜ ao-primalidade de n s˜ao sempre relativamente frequentes. Mais precisamente, seja

  1 α(n) = | {a | 0 < a < n, n ´e um pseudoprimo forte na base a} |.

  ϕ(n) Ent˜ ao para todo n´ umero composto ´ımpar n > 9 temos α(n) ≤ 1/4. A igualdade vale exatamente para os compostos n das seguintes formas: n = p p , p , p primos, p p = 2p

  1

  2

  1

  2 1 ≡ 3 (mod 4),

  2 1 − 1;

  n = p p p , p , p , p primos, p

  1

  2

  3

  1

  2 3 i ≡ 3 (mod 4), n n´umero de Carmichael.

  Os menores exemplos de n´ umeros compostos n da primeira forma para a qual α(n) = 1/4 s˜ao n = 15 = 3 · 5, n = 91 = 7 · 13 e n = 703 = 19 · 37. O menor exemplo de n´ umero composto da segunda forma ´e n = 8911 = 7 · 19 · 67. Sabe-se que 1

  ( +ǫ) 2

  existem menos do que N n´ umeros compostos n destas formas menores do que N ; conjectura-se que o n´ umero de compostos n da primeira forma seja maior do 1

  ( −ǫ) 2 que N . Na maioria dos casos α(n) ´e muito menor. O resultado acima serve de base para o algoritmo Miller-Rabin, um exemplo de teste de primalidade probabil´ıstico. Dado n, tomamos t valores de a ao acaso no intervalo 1 < a < n e verificamos para cada a se n passa no teste de primalidade forte na base a. Se n for ´ımpar composto, a probabilidade de que um dado a acuse a n˜ ao-primalidade de a ´e maior do que 3/4 (pelo teorema); assim, a probabilidade

  

−t

  de que n escape a t testes ´e menor do que 4 . Este tipo de teste ´e extremamente util em aplica¸c˜ ´ oes (como em criptografia) onde ´e importante criar primos relativa- mente grandes mas n˜ ao existe a preocupa¸c˜ ao com demonstra¸c˜ oes ou com perfei¸c˜ ao absoluta.

4 Testes determin´ısticos para n´ umeros especiais

  Em outros contextos estamos interessados em testes determin´ısticos: dado um in- teiro positivo n, queremos decidir, com certeza e em tempo curto (i.e., polinomial no n´ umero de d´ıgitos), se n ´e primo ou composto.

  Podemos modificar o algoritmo de Miller-Rabin para torn´a-lo determin´ıstico testando todos os valores de a em um intervalo suficientemente grande: uma famosa

  2

  generaliza¸c˜ ao da hip´ otese de Riemann implica que o intervalo de 1 at´e 2(log n) j´a ´e grande o bastante ([2]). Este algoritmo ´e r´apido e geral, mas infelizmente depende de uma conjectura.

  O seguinte resultado mostra que sob certas hip´oteses as contas do teste de Miller- Rabin podem demonstrar a primalidade de n (com um ´ unico valor de a). De fato, muitos dos maiores primos conhecidos s˜ao desta forma.

  k k b com 2 > b.

  Teorema 7 (Proth) Seja n > 1 inteiro. Suponha que n − 1 = 2

  (n−1)/2 Ent˜ ao n ´e primo se, e somente se, existe um inteiro a com a ≡ −1 (mod n).

  Demonstra¸ c˜ ao: k−1 Suponha que existe a como acima. Seja q | n, q primo. Temos

  b 2 b k k k

  (a ) q a = 2 . Assim 2 . Se n for ≡ −1 (mod q) donde ord | q − 1 e q ≥ 2 composto temos

  k

2 k k+1

  • 1) > (2 b + 1) + 2 > n, n ≥ (2 uma contradi¸c˜ ao.

  Se n ´e primo, podemos tomar a qualquer n˜ ao quadrado m´odulo n; ou seja, metade dos inteiros entre 1 e n − 1 serve como a. Dada a fatora¸c˜ ao de n − 1 temos como generalizar este resultado para tentar demonstrar a primalidade de n. Proposi¸ c˜ ao 8 Seja n > 1. Se para cada fator primo q de n − 1 existe um inteiro

  (n−1)/q n−1

  a tal que a q ≡ 1 (mod n) e a q 6≡ 1 (mod n) ent˜ao n ´e primo.

  q k q

  Demonstra¸ c˜ ao: Seja q

  q

  a maior potˆencia de q que divide n − 1. A ordem de a

  

k k

q q

  m´odulo n ´e um m´ ultiplo de q , donde ϕ(n) ´e um m´ ultiplo de q . Como isto vale para todo fator primo q de n − 1, ϕ(n) ´e um m´ultiplo de n − 1 e n ´e primo.

  

k

  Proposi¸ c˜ R onde q ´e primo e existe um inteiro ao 9 (Pocklington) Se n − 1 = q

  n−1 (n−1)/q

  a tal que a ≡ 1 (mod n) e mdc(a − 1, n) = 1 ent˜ao qualquer fator primo

  k de n ´e cˆ ongruo a 1 m´ odulo q . n−1

  Demonstra¸ c˜ ao: Se p ´e um fator primo de n ent˜ ao a ≡ 1 (mod p) e p n˜ao

  (n−1)/q

  divide a − 1, donde ord p

  a, a ordem de a m´odulo p, divide n − 1 mas n˜ao

  

k k

).

  divide (n − 1)/q. Assim, q | ord p a | p − 1, donde p ≡ 1 (mod q

  Corol´ ario 10 Se n − 1 = F R, com F > R e para todo fator primo q de F existe

  n−1 (n−1)/q

  a > 1 tal que a ≡ 1 (mod n) e mdc(a − 1, n) = 1 ent˜ao n ´e primo.

  k

  Demonstra¸ c˜ ao: Seja q um fator primo de F e q a maior potˆencia de q que divide F ; pela proposi¸c˜ ao anterior, todo fator primo de n deve ser cˆongruo a 1

  k

  m´odulo q . Como isto vale para qualquer fator primo de F , segue que qualquer √ fator primo de n deve ser cˆ ongruo a 1 m´odulo F . Como F > n, isto implica que n ´e primo.

  De fato, basta conhecer um conjunto de fatores primos cujo produto seja maior

  1/3

  para, usando o resultado de Pocklington, tentar demonstrar a do que (n − 1) primalidade de n (o que deixamos como exerc´ıcio).

  A melhor maneira conhecida de gerar primos extremamente grandes ´e procurar

  

p

primos de Mersenne, i.e., n´ umeros da forma 2

  − 1, p primo. Deixamos como exer-

  n

  c´ıcio para o leitor verificar que se 2 − 1 ´e primo ent˜ao n ´e primo. Os primeiros primos de Mersenne s˜ ao 3, 7, 31 e 127, correspondentes a p = 2, 3, 5, 7; por outro

  11

  lado, 2 − 1 = 2047 = 23 · 89. S˜ao conhecidos hoje (abril de 2011) 47 primos de

  Mersenne e os 9 maiores primos conhecidos s˜ao todos desta forma: o maior deles corresponde a p = 43 112 609 e tem 12 978 189 algarismos; os outros oito corres- pondem aos seguintes valores de p: 42 643 801, 37 156 667, 32 582 657, 30 402 457, 25 964 951, 24 036 583, 20 996 011, 13 466 917. Conjectura-se que existam infinitos primos de Mersenne. Lembramos que um inteiro positivo ´e perfeito se ele for igual a soma de seus divisores positivos pr´oprios. Os primeiros n´ ` umeros perfeitos s˜ao 6 e

  28; n˜ ao ´e dif´ıcil verificar que os n´ umeros perfeitos pares s˜ao exatamente os n´ umeros

  p−1 p p

  da forma 2 (2 − 1), onde 2 − 1 ´e primo de Mersenne. Um dos poucos problemas em aberto da Matem´atica que foram formulados na antiguidade ´e decidir se existem n´ umeros perfeitos ´ımpares.

  O crit´erio de Lucas-Lehmer permite determinar com facilidade se um n´ umero

  p

  de Mersenne ´e primo. Dado um primo p > 2, queremos decidir se n = 2 − 1 ´e

  2

  2

  primo. Sejam S = 4, S = 4 = S

  1 − 2 = 14, . . . , S k+1 − 2. Temos que n ´e primo k p

  se e somente se S ´e m´ ultiplo de 2

  p−2 − 1. Esta seq¨uˆencia cresce muito r´apido, mas p

  basta fazer as contas m´ odulo 2 − 1 (ver [3], [5]). O seguinte fato crucial para a demonstra¸c˜ ao pode ser verificado pelo leitor: para todo k ≥ 0, k k

  √ √

  2

  2 S = (2 + 3) 3) . k + (2 −

  Note que um n´ umero de Mersenne M ´e escrito na base 2 como 111 . . . 111, com p

  p

  algarismos. Uma generaliza¸c˜ ao natural seriam os n´ umeros escritos como 111 . . . 111

  p

  em outra base, isto ´e, n´ umeros da forma (B E f´ acil − 1)/(B − 1), onde B ´e a base. ´ ver que um tal n´ umero s´ o pode ser primo se p for primo. No caso B = 10 estes n´ umeros s˜ ao conhecidos como repunits. N˜ ao se conhece um crit´erio an´ alogo ao de Lucas-Lehmer para testar a primalidade de n´ umeros deste tipo quando B > 2. O maior primo conhecido desta forma ´e

  8 317

  28 839 − 1

  , 28 838 que tem 37 090 algarismos. Os ´ unicos repunits (comprovadamente) primos conhe- cidos s˜ao para p = 2, 19, 23, 317, 1 031. Recentemente (entre 1999 e 2007), foram descobertos os seguintes valores de p para os quais os repunits correspondentes s˜ ao

  provavelmente primos, i.e., passam por diversos testes probabil´ısticos de primali-

  dade: 49 081, 86 453, 109 297 e 270 343. De acordo com os testes j´ a realizados, qualquer outro repunit primo deve ter mais de 400 000 d´ıgitos.

  5 O teste determin´ıstico de Agrawal, Kayal e Saxena

  Permaneceu em aberto por muito tempo se existe um crit´erio de primalidade deter- min´ıstico, r´ apido e geral. Este problema for resolvido por Agrawal, Kayal e Saxena, que criaram um tal algoritmo, tamb´em baseado no teorema de Fermat. Suponha- mos que x ´e uma vari´ avel, a um inteiro e p um n´ umero primo. Usando o binˆomio de Newton temos que X p p

  p p−j j

  (x + a) = x a , j

  j=0 p

  logo todos os termos mas nos casos em que j ´e diferente de 1 e p, temos p |

  j

  intermedi´ arios desta expans˜ ao s˜ao divis´ıveis por p, assim

  p p p p

  (x + a) + a + a (mod p) ≡ x ≡ x onde na ´ ultima igualdade usamos o teorema de Fermat (aqui P (mod N )

  ≡ P

  1

  significa que existe um polinˆ omio S de coeficientes inteiros com P = N S, ou,

  1 − P k

  equivalentemente, que para todo k os coeficientes de x em P e P s˜ao cˆongruos

  1 N N

  m´odulo n). Reciprocamente, se (x + a) + a (mod N ) para algum inteiro a ≡ x

  N

  com mdc(a, n) = 1, vemos que N divide todos os coeficientes binomiais com

  j

  0 < j < N . Se N fosse composto e q ´e um fator primo de N , ent˜ao N

  N (N − 1) . . . (N − q + 1) = q q(q − 1) . . . 1

  Vemos que os ´ unicos termos que s˜ao m´ ultiplos de q nesta express˜ao s˜ao o N no

  

k

  numerador e o q no denominador, assim se q ´e a maior potˆencia de q que divide

  N N k

  N , temos que q ∤ , logo N ∤ , absurdo. Assim, N ´e primo. Desta forma

  q q

  obtemos o seguinte crit´erio de primalidade:

  N N

  • a (mod N ), para todo a < N N ´e primo ⇐⇒ (x + a) ≡ x

  N N + a (mod N ), para algum a < N , com mdc(a, N ) = 1.

  ⇐⇒ (x + a) ≡ x Este crit´erio, por enquanto, ´e ineficiente, porque temos que calcular todos os coefi-

  N

  ciente de (x + a) e mostrar que todos os coeficientes intermedi´ arios s˜ao divis´ıveis

  N N

  por N . Outra observa¸c˜ ao importante ´e que se os polinˆ omios (x + a) e x + a s˜ao iguais m´ odulo N , ent˜ ao eles deixam o mesmo resto m´ odulo N quando divididos por

  r

  qualquer polinˆ omio mˆonico. Em particular, se dividimos por x − 1 temos que

  N N r

  (x + a) + a (mod x ≡ x − 1, N)

  N ´e primo =⇒ para todo a < N, r ∈ N (onde P (mod Q, N ) significa que existem polinˆ omios R, S com coeficientes

  ≡ P

  1 inteiros tais que P = QR + N S).

  1 − P

  O fato importante, mostrado por Agrawal, Kayal e Saxena, ´e que para garantir a primalidade de N s´o precisamos testar que esta congruˆencia ´e v´ alida para um valor especial de r (na vers˜ao original um r primo para o qual r − 1 tem um fator primo

  √ r log N , o qual divide a ordem de n m´odulo r) que depende polinomialmente q ≥ 4 de log N e alguns poucos valores de a (veja [1], [3]).

  1. Entrada N > 1.

  b 2. Se N = a com b > 1, retorna COMPOSTO.

  1

  2 3. Encontrar o menor r tal que ord N > (log N ) . r

  2

  • a (mod x

  A outra pergunta proposta por Gauß permanece em aberto: se existe algoritmo r´ apido para fatorar inteiros. Um tal algoritmo teria grande relevˆancia pr´atica, com- prometendo as formas mais populares de criptografia. Existe ainda a possibilidade de que n˜ ao exista um algoritmo r´ apido, mas que ainda assim exista uma m´aquina (no sentido f´ısico) capaz de fatorar inteiros rapidamente. De fato, a mecˆ anica quˆ antica parece permitir a constru¸c˜ ao de um computador quˆ antico e Peter Shor encontrou um “algoritmo” que permite a um computador quˆantico fatorar inteiros em tempo polinomial [8].

  [6] W. H. Mills, A prime representing function, Bull. Amer. Math. Soc., 53 (1947), 604. [7] C. Pomerance, A new lower bound for the pseudoprimes counting function, Illinois J. Math, 26, 1982, 4–9. [8] P. W. Shor, Polynomial-Time Algorithms for Prime Factorization and Discrete

  [5] D. H. Lehmer, An extended theory of Lucas’ functions, Ann. Math. 31 (1930), 419–448. Reimpresso em Selected Papers, (ed. D. McCarthy), vol 1, Ch. Bab- bage Res. Center, St. Pierre, Manitoba, Canada, 11–48 (1981).

  P −1 ≡ 1 (mod P ), Annali di Matematica (3) 9, 1904, 139–160.

  [4] M. Cipolla, Sui numeri composti P , che verificano la congruenza di Fermat a

  um passeio com primos e outros n´ umeros familiares pelo mundo inteiro, Projeto Euclides, IMPA, 2010.

  [1] M. Agrawal, N. Kayal e N. Saxena, PRIMES is in P, Ann. of Math. (2) 160 (2004), no. 2, 781–793. [2] E. Bach, Explicit bounds for primality testing and related problems, Math. of Comp. 55 (1990), 355–380. [3] F. Brochero, C. G. Moreira, N. C. Saldanha, E. Tengan, Teoria dos n´ umeros:

  Referˆ encias

  7. Retorna PRIMO.

  4. Se mdc(a, N ) > 1 para algum primo a ≤ r, retorna COMPOSTO.

  − 1, N), retorna COMPOSTO;

  r

  N

  6≡ x

  2 N ⌋ fa¸ca: Se (x + a) N

  6. Para a = 1 at´e ⌊ pϕ(r)/2 log

  5. Se √ N < r, retorna PRIMO.

  Logarithms on a Quantum Computer, SIAM J. Comput. 26 (5), 1484-1509 (1997).

Novo documento