Sunteți pe pagina 1din 194

THIAGO OLIVEIRA SANTOS

TESTES DE PRIMALIDADE E SUA EVOLUO

UNIFIEO CENTRO UNIVERSITRIO FIEO PIBIC PROGRAMA INSTITUCIONAL DE BOLSAS DE ENSINO

Osasco - 2008

THIAGO OLIVEIRA SANTOS

TESTES DE PRIMALIDADE E SUA EVOLUO


Monografia destinada a UNIFIEO como exigncia para avaliao da iniciao cientfica desenvolvida nesta instituio sob orientao da prof Dr. Marly Mandia.

UNIFIEO CENTRO UNIVERSITRIO FIEO PIBIC PROGRAMA INSTITUCIONAL DE BOLSAS DE ENSINO

Osasco - 2008

Agradecimentos

minha orientadora, Marly Mandia, que acreditou em mim e sempre me guiou ao longo deste trabalho.

s minhas amigas, Llian e Renilda, que me incentivaram e me ajudaram em muitos momentos que eu precisei;

Aos meus pais, que so os alicerces de tudo o que eu sou hoje;

A Deus, que abre vrios caminhos para trilharmos, e nos d sabedoria para escolhermos.

Resumo
Este trabalho tem por objetivo discutir um problema que intriga os matemticos desde os tempos antigos: a Primalidade de nmeros. Analisamos a evoluo dos testes de primalidade ao longo do tempo: desde o mais antigo conhecido, o Crivo de Erathostenes, testes mais atuais e probabilsticos, como o de Monte Carlo, at o algoritmo que causou grande impacto na comunidade matemtica: o AKS, que no s determina se um nmero primo, como faz isso em tempo polinomial. Para desenvolvermos nosso trabalho, ns apresentamos estudos bsicos sobre estruturas algbricas, teoria dos nmeros e teoria dos algoritmos. Damos uma descrio histrica de alguns testes e analisamos, particularmente, o algoritmo AKS. Abordamos tambm a rea de Criptografia como uma aplicao dos nmeros primos em nossos dias. Por fim, como apndice a este trabalho, damos um exemplo de implementao do algoritmo AKS.

Abstract
In this work we study the primality tests and its evolution along the time, since the Erathostenes Crive until the actual probabilistic and deterministic tests like Monte Carlos and the algorithm which caused great impact in the mathematical community: the AKS Test. To develop our work, we treat basic concepts about algebraic structures, number theory and theory of algorithms. We give a historical description of some tests and analyze, particularly, the AKS algorithm. We also analyze the costs of algorithms in order to verify if a test takes a polynomial or exponential time. The area of Cryptography is viewed in our work as an application of the prime numbers in our days. Finally, we give an implementation example of the AKS algorithm.

Lista de Smbolos
Conjunto dos nmeros Inteiros Conjunto dos Inteiros negativos MDC Mximo divisor comum a b mod m a cngruo a b mdulo m Funo de tociente Euler em n (n ) Z Z
U (C )

Z+ Z*

Conjunto dos Inteiros positivos Conjunto dos Inteiros no nulos Mnimo mltiplo comum Resto de a dividido por m Inteiros mdulo m Existe Elementos inversveis de Z m nico Contido Implica que Funo de A em B Subgrupo gerado por a Ordem de a em A. n fatorial Somatria Menor inteiro maior do que n
Smbolo de Jacobi (n composto) Unidade de C Grau de um polinmio f Conjunto dos polinmios com coeficientes em A Raiz n-sima de a Elemento mximo do conjunto Derivada da funo f Classe de equivalncia de a Subanel gerado pelo polinmio f

Produtrio Elementos inversveis do conjunto C Vazio Pertence Qualquer Se e s se Mdulo ou cardinalidade de A Infinito Combinao de n p a p Nmero de primo at x Maior inteiro menor do que n
Smbolo de Legendre (p primo) Conjunto medial de n Elemento nulo de C Coeficiente dominante de f Raiz quadrada de a

MMC a mod m Zm
U (m)

! f :Aa B

C ( x)

p n

a ord A a n!

n
a ( ) n 1C

n
a ( ) p Hn 0C

( f )
a log b a

( f ) A[x ]
n

O (n ) Fn a, b

a max{A} Logaritmo de a na base b Big-Oh, custo de um algoritmo f ' a n-simo nmero de Fermat

Subgrupo gerado por a e b

f (x )

Sumrio
Introduo: Nmeros Primos e Testes de Primalidade ............................................................. 7 1. 2. 3. 4. 1.1. 1.2. 1.3. 1.4. 1.5. 1.6. 1.7. 1.8. 1.9. 2.1. 2.2. 3.1. 3.2. 3.1. 3.2. 3.3. 3.4. 3.5. 3.6. 3.7. Primalidade: um intrigante problema. ......................................................................... 7 Problemas computveis .................................................................................................. 8 A descoberta: Primos est em P .................................................................................... 8 A Evoluo dos Testes de Primalidade ......................................................................... 9 Teoria dos Nmeros, Aritmtica Modular e Grupos. ...................................... 11 Resultados bsicos da Teoria dos Nmeros ............................................................... 11 Congruncia Mdulo m ............................................................................................... 18 Sistemas de Congruncia ............................................................................................. 24 Classes de equivalncia e o conjunto Zm ..................................................................... 29 Grupos ........................................................................................................................... 34 Grupos Cclicos ............................................................................................................. 38 Grupos em Zm................................................................................................................ 41 Distribuio dos Primos ............................................................................................... 46 Smbolo de Jacobi e Reciprocidade Gaussiana .......................................................... 49 Teoria dos Anis e Corpos. ................................................................................. 59 Anis e Corpos .............................................................................................................. 59 Anis Polinomiais .......................................................................................................... 64 Sucesses de Lucas. ............................................................................................. 77 Exemplos de definio .................................................................................................. 77 Propriedades ................................................................................................................. 81 Anlise de Custo e Algoritmos Usuais. .............................................................. 97 Noo bsica do clculo do custo ................................................................................ 97 O Custo de Operaes Bsicas .................................................................................... 98 A Notao O ................................................................................................................ 100 Classificao de Custos .............................................................................................. 102 Custo da potenciao modulo n................................................................................. 103 Algoritmo Euclidiano Estendido ............................................................................... 106 Teste Eficiente da potncia Perfeita .......................................................................... 111
5

Captulo 1.

Captulo 2.

Captulo 3.

Captulo 4.

3.8. 3.9. 4.1. 4.2. 6.1. 6.2. 6.3. 5.1. 5.2. 8.1. 8.2. 9.1. 9.2. 9.3. 9.4. 10.1. 10.2. 10.3.

Custo do Clculo do Smbolo de Jacobi ................................................................... 118 Resumo dos resultados obtidos .................................................................................. 120 Testes de Primalidade. ........................................................................................ 97 Cronologia dos testes de primalidade ....................................................................... 122 Anlise dos Primeiros Testes Determinsticos.......................................................... 125 Nmeros de Mersenne e Teste de Primalidade. .............................................. 135 Origem e relaes bsicas dos Nmeros de Mersenne. ........................................... 135 Testes de Primalidade envolvendo Sucesses de Lucas. ......................................... 137 O Projeto GIMPS. ...................................................................................................... 147 O Teste de Miller Rabin .................................................................................... 135 Teorema de Miller-Rabin .......................................................................................... 148 Algoritmo e Anlise de Custo .................................................................................... 157 O Teste de Solovay-Strassen ............................................................................. 160 Teorema de Solovay-Strassen .................................................................................... 160 Algoritmo e Anlise de Custo .................................................................................... 163 O Algoritmo AKS .............................................................................................. 165 Teorema Fundamental ............................................................................................... 165 Algoritmo..................................................................................................................... 172 Anlise do algoritmo................................................................................................... 174 Observaes finais ...................................................................................................... 178 Criptografia de Chave Assimtrica........................................................................... 180 O RSA e o Problema da Fatorao ........................................................................... 181 A Implementao e a Importncia do RSA ............................................................. 185
............................................................................................................................. 186 ............................................................................................................................. 187

Captulo 5.

Captulo 6.

Captulo 7.

Captulo 8.

Captulo 9.

Captulo 10. Criptografia........................................................................................................ 179

Concluso Apndice A.1. A.2. A.3. A.4.

Implementao do algoritmo AKS............................................................................ 188 Teste da Potncia Perfeita.......................................................................................... 188 Teste de Primalidade Bruto ....................................................................................... 189 Clculo do inverseo mdulo m .................................................................................. 189
............................................................................................................................. 191 6

Bibliografia

Introduo: Nmeros Primos e Testes de Primalidade


1. Primalidade: um intrigante problema.
Desde o incio da histria da matemtica, quando as propriedades dos nmeros comearam a ser estudadas, um dos temas mais notveis o dos nmeros primos. Eles so um dos principais fundamentos da Teoria dos Nmeros, e suas propriedades tm largo uso em diversas reas da matemtica. Sua definio simples: um nmero natural chamado de primo quando seus nicos

divisores so 1 e ele mesmo. Euclides definia como nmeros primos comprimentos que s podem ser medidos pela unidade devido s noes geomtricas da matemtica da poca. Mas
neles se embasam diversos problemas, com ou sem soluo, de essencial importncia para a matemtica. sobre a infinidade dos nmeros primos a primeira demonstrao por absurdo da histria, e devido a esta infinidade, um dos grandes problemas que persistem at hoje o de determinar se dado nmero ou no primo. Este o chamado problema da primalidade. A princpio, um problema de soluo simples. Como os nicos divisores de um nmero primo so 1 e ele mesmo, para saber se um nmero ou no primo, basta verificar se ele no admite nenhum outro divisor. De fato, um procedimento vlido, mas em certos casos, invivel. Isto porque o volume de verificaes necessrias aumenta junto com a grandeza do nmero, sendo que para nmeros muito grandes, a verificao se torna grande demais para o perodo de uma vida humana. Muitos matemticos se dedicaram a este problema, com o objetivo de encontrar formas de determinar a primalidade de um nmero sem usar diretamente a definio de primo. No sculo XX, com o avano dos estudos na teoria dos nmeros e tambm com o advento da criptografia1 muitos mtodos foram desenvolvidos e resultados impressionantes foram alcanados. Os testes mais usados at hoje foram criados nessa poca, mas foi em 2003 que ocorreu o avano matemtico mais significativo para este problema: a inveno do algoritmo AKS.

Criptografia so tcnicas para ocultar informao, de forma que apenas quem tenha a chave para revel-la poder descobrir seu contedo. A necessidade de codificao de mensagens cresceu durante as grandes guerras e com a inveno da informtica. A criptografia moderna totalmente baseada em sofisticados mtodos matemticos.

2. Problemas computveis
Entende-se por problema computvel todo o problema que pode ter uma soluo descrita em uma srie de passos finitos ou, em outras palavras, todo problema que pode ser resolvido por meio de um algoritmo. Dentro desta categoria, temos vrias classificaes sobre eficincia. Notese que a eficincia de um mtodo no apenas sua validade ou eficcia, isto , se ele resolve efetivamente o problema ou no, mas sim a sua rapidez em resolver o problema. Quanto mais rpido um mtodo, mais eficiente ele . Dentre essas classificaes, temos as duas mais utilizadas que a Exponencial e a

Polinomial. Geralmente, todo mtodo de resoluo de um problema computvel que tenha tempo
exponencial, tem um tempo de resoluo que cresce de maneira incontrolada, em funo do tamanho do problema. Por outro lado, os mtodos de resoluo de tempo polinomial tm um crescimento muito bem delimitado, e so ideais para serem implementados. Diante disso, temos o que chamamos de problema computacional, que determinar se o tempo de resoluo de um problema pode ou no ser limitado por uma funo polinomial, de acordo com seu tamanho. Usualmente, definimos o conjunto dos problemas que comprovadamente podem ser resolvidos em tempo polinomial como P. praticamente impossvel demonstrar que certo problema nunca poder ser resolvido em tempo polinomial, isto , que ele s pode ser resolvido em tempo exponencial. Portanto, definimos o conjunto dos problemas que no sabemos se podem ser resolvidos em tempo polinomial como NP. um desafio computacional determinar se certo problema est em P, e um dos mais conhecidos exatamente o problema da primalidade. Determinar se um nmero primo ou no, uma tarefa aparentemente simples, mas, medida que o tamanho do nmero testado aumenta, a tarefa comea a ficar insana. De fato, para certas grandezas um computador levaria centenas de milhares de anos para determinar a primalidade de um nmero, usando os mtodos mais bvios.

3. A descoberta: Primos est em P


Foi surpreendente para os matemticos do mundo inteiro o artigo Primes Is in P. publicado em agosto de 2002.

A surpresa no foi devida s ao fato de que o grande problema computacional da primalidade foi resolvido, mas porque foi resolvido com conceitos fundamentais de lgebra que so ensinados nos cursos de graduao em matemtica. Mais do que isso, o problema no foi resolvido por aqueles que h tantos anos se dedicavam a ele. Foi resolvido por trs estudantes indianos, sendo que dois deles tinham acabado der concluir o curso de graduao. Grandes problemas matemticos foram resolvidos no sculo XX. No entanto, nenhum deles usou conceitos to simples como os usados em Primos est em P. So resolues acessveis apenas a especialistas, por usarem conceitos matemticos bastante avanados. Primos est em P chegou a virar notcia de jornal, algo em desencontro inclusive com a imagem desinteressante que tantas pessoas tm sobre a matemtica. Isso, claro, devido a importncia dos nmeros primos nos mtodos modernos de criptografia, o que atrai ainda mais curiosos e especialistas em segurana de dados. Desde sua descoberta, houve vrias variaes e melhorias do algoritmo AKS. Este trabalho se prope a apresentar uma forma mais elementar do algoritmo, que pode ser encontrada em [COUTINHO 2004] alm de [DIETZFELBINGER 2004].

4. A Evoluo dos Testes de Primalidade


Desde tempos remotos, como j dito, a primalidade intriga os matemticos e gerou frutos fabulosos para a cincia. O objetivo de nosso trabalho analisarmos os testes de primalidade criados ao longo da histria e todo o conceito por trs deles, at chegarmos a esta ltima e grande descoberta: o algoritmo AKS. No iremos abordar todos os testes, pois isso foge das dimenses deste trabalho. No entanto, abordaremos testes de certa relevncia quantos aos avanos feitos para a resoluo do problema da primalidade. Apresentaremos todo o contedo matemtico necessrio alm de uma pequena abordagem computacional, para podermos falar da eficincia dos testes apresentados. Alm disso, apresentaremos uma breve cronologia, para que o leitor se localize nesta linha do tempo e, em seguida, iremos analisar matematicamente alguns dos testes citados. Os primeiros testes analisados so conhecidos como Testes Clssicos de Primalidade e sero abordados em um nico captulo. Eles se caracterizam por serem determinsticos e de baixa 9

eficincia, ou seja, de tempo exponencial. Alguns, porm, como o leitor ver, possuem tempo polinomial, mas estes so testes voltados apenas para tipos particulares de primos, portanto o problema da primalidade no resolvido com eles. Os prximos testes analisados se basearam numa teoria conhecida como Sucesses de Lucas. Tais testes so eficientes para classes muito particulares de nmeros como, por exemplo, os nmeros de Mersenne. Iremos, enfim, abordar trs testes em captulos separados: Miller-Rabin, Solovay-

Strassen e Algoritmo AKS. Os dois primeiros so testes probabilsticos, isto , no determinam se


um nmero primo, mas determinam uma chance de ser. O leitor ver que a eficincia dos testes probabilsticos muito maior do que a do

algoritmo AKS e eles oferecem uma margem de erro muito satisfatria e, por isso, ainda so os
mtodos mais usados para encontrar primos comercialmente, isto , para uso em criptografia ou qualquer outra aplicao computacional que necessite de primos gigantescos. Devido a isso, a importncia do algoritmo AKS mais matemtica do que comercial, o que claramente no diminui sua relevncia.. Enfim, aventuremo-nos por este fascinante caminho que partiu de Grcia e chegou ndia, que o caminho trilhado para a resoluo do grande problema da primalidade.

10

Captulo 1. Teoria dos Nmeros, Aritmtica Modular e Grupos.


Neste captulo estudaremos a teoria em que se baseia a maioria dos testes de Primalidade. De fato, h uma classe de testes que se baseia numa teoria conhecida como sucesses de Lucas, abordada no captulo 3. Alm disso, o algoritmo AKS, apresentado no captulo 9, tambm se baseia na teoria apresentada no captulo 2 deste trabalho.

1.1.

Resultados bsicos da Teoria dos Nmeros


Muitos conceitos bsicos da teoria dos nmeros se tornam intuitivos para uma pessoa

fundamentalmente instruda na Matemtica. Devido a isso, no de interesse deste trabalho seguir total rigor ao falar destes conceitos. Pelo contrrio, iremos destacar o necessrio para nosso objetivo e de maneira sucinta, para melhor entendimento e aproveitamento dos resultados. Comearemos definindo diviso:

Proposio 1.1.1: Diviso Euclidiana. Dados a, b Z : b > 0 , existem q, r Z unicamente determinados tais que a = b.q + r ,

sendo 0 r < b .

Demonstrao

Se a = 0 a soluo trivial. Provemos para a 0 . Claramente, existe q0 tal que b.q 0 a . Seja ento r0 = a b.q 0 . Pela definio de b.q 0 , r0 0 sempre. Ento, temos dois casos para r0 : 1. 2. r0 < b , neste caso no h o que demonstrar; r0 b . Mas ento existe
c>0

tal

que

b.c r0 .

Notemos

que

b.c + b.q 0 a b.(c + q 0 ) a , isto , para q1 = c + q 0 , temos b.q1 a e r1 = a b.q1 .

11

Aplicando estes argumentos consecutivamente, podemos encontrar um q n tal que rn < b . Com isso, no existe c > 0 tal que b.c rn . Alm disso, rn 1 b . Isto implica que q n o nico valor para q que resulta em r = a b.q : 0 r < b .

Esta proposio nada mais do que a formalizao do usual algoritmo da diviso, amplamente conhecido. Convenientemente, podemos definir tambm divisibilidade:
Definio 1.1.1: Dados dois inteiros a e b , com a 0 . Dizemos que a divide b (denotamos

a | b ) se existe c inteiro tal que b = ac. Nessas condies, chamamos a de divisor de b, e chamamos b de mltiplo de a. Obviamente, a unidade divisor de todo nmero inteiro, o que implica que todo nmero inteiro divisor de si mesmo, isto , a = 1.a, a Z . Assim, algumas propriedades so imediatas quanto a diviso:
Propriedades 1.1.1:

Para divisores no nulos 1. 2. 3. 4.


a|a; a | b, b | c a | c ; a | c, b | d ab | cd ;

a | b, a | c a | (b + c ) ;

Estas propriedades no sero demonstradas exatamente por serem elementares. Mas h outra propriedade que merece um pouco mais de ateno.

12

Proposio 1.1.2: Sejam a, b, c Z tais que a | (c + b ) . Temos que a | c se e s se a | b . Demonstrao

Suponha que a | c , mas a / b . Temos ento que b = a.q1 + r ,0 < r < a . Mas, por hiptese, |
a | c , isto , c = a.q 2 . Logo, b + c = a.q2 + a.q1 + r b + c = a (q1 + q2 ) + r . Mas isto significa que

a / (c + b ) , o que um absurdo. Portanto, a | b . Isto suficiente para a ida e para a volta. | (Observe que se a no dividir nenhum deles, ainda assim a pode dividir a soma do resto de cada um). Daremos, agora, algumas definies importantes.
Definio 1.1.2: (Nmero Primo e Nmero Composto)

Um nmero a Z + , a 1 chamado de primo se seus nicos divisores so a unidade e ele mesmo. Caso contrrio, um nmero chamado de composto.
Definio 1.1.3: (Divisor Comum)

Se a, b, c Z + so tais que a | b e a | c , dizemos que a um divisor comum de b e c. Seja ento A = x Z + : x | b e x | c o conjunto dos divisores comuns de a e b. Ento, chamamos de
mximo divisor comum o elemento d = max ( A) e denotamos este nmero como d = MDC (a, b ) .

Notemos que A no vazio uma vez que 1 A e os divisores positivos de um inteiro positivo x pertence ao conjunto { ,..., x}. 1
Definio 1.1.4: (Mltiplo Comum)

Se a, b, c Z + so tais que a | c e b | c , dizemos que c um mltiplo comum de a e c. Seja ento

A = {x Z + : a | x, b | x} o conjunto dos mltiplos comuns de a e b. Ento, chamamos de mnimo


mltiplo comum o elemento m = min( A) e denotamos este nmero como m = MMC(a, b ) .

Notemos que A no vazio uma vez que a b A .

13

Podemos encontrar a partir dessa definio um divisor ou um mltiplo comum de qualquer par de inteiros, tal como o MDC ou o MMC. Alm disso, no difcil imaginar a forma do MMC. Afinal, sejam a, b, d Z tais que d = MDC(a, b ) . Ento, podemos escrever
a = d .a ' , b = d .b' . Claramente m = d .a'.b' divisvel por ambos, logo, um mltiplo comum. No

entanto, qualquer fator que seja removido far com que ele no seja mais divisvel por a ou por b. Logo, ele o mnimo mltiplo comum. Diante disso, fcil verificar a prxima proposio.
Proposio 1.1.4: Seja a, b Z . Ento, MMC (a, b ).MDC (a, b ) = a.b .

Iremos mostrar como encontrar o mximo divisor comum mais frente. Devido proposio acima, isso ser o suficiente para encontrar tambm o MMC.
Definio 1.1.5: (Nmeros primos entre si)

Dizemos que a, b Z + so primos entre si se MDC (a, b ) = 1 . Uma verdade bem sutil que se um nmero positivo no primo ele pode ser escrito como o produto de vrios primos distintos. Notemos que todo composto c tem, no mnimo, dois divisores d1 , d 2 Z , 1 < d1 , d 2 < c tais que c = d1 .d 2 . Mas, se d1 e d 2 forem compostos, possvel aplicar este resultado novamente para cada um deles. A questo que h um nmero finito de possveis divisores e, por isso, aplicando esse resultado consecutivamente, chegaramos, em dado momento, a uma sequncia de divisores primos. Mas, alm disso, a menos da ordem dos fatores, existe uma nica forma de escrever um nmero composto positivo como o produto de primos (positivos). Este resultado ser expresso no prximo teorema:

14

Teorema 1.1.1: O Teorema Fundamental da Aritmtica (TFA).

Seja

a Z : a > 1,

ento pi

existe

uma

nica
k (i ) > 0

forma

de

escrever

como

k k a = p1k (1) . p 2 ( 2 ) ... p n ( n ) , onde

primo e

para qualquer

i { ,2,..., n} e 1

1< p1 < p 2 < ... < p n .


Demonstrao

Se a primo, ento a = p e no h o que demonstrar. Se a composto, sabemos que ele pode ser escrito como o produto de primos. Ento, demonstremos a unicidade da fatorao por induo sobre n. Seja
qj

a = p1k (1) . primo

Suponhamos qualquer

que

exista

outra Assim,

fatorao temos

de que

y a = q1y (1) ...q m( m ) , m 1 ,

para

j { ,..., m}. 1

y y p1k (1) = q1y (1) ...q m( m ) , donde p1k (1) | q1y (1) ...q m( m ) . Como os q j so primos distintos isso implica que

p1k (1) | q iy ( i ) , para algum i. Assumindo, sem perda de generalidade, que p1k (1) | q1y (1) , temos que
y q 2y ( 2 ) ...q m( m ) = 1 e, portanto, y (2),..., y (m ) = 0 . Logo, a = p1k (1) = q1y (1) . Assim, para este caso o

teorema vlido.
k Suponhamos ento que o teorema vlido para a = p1k (1) ... p n ( n ) , n 1 . Provemos o k k (n mesmo para a = p1k (1) ... p n ( n ) . p n +1 +1) . y Suponhamos, por absurdo, que haja outra fatorao para a, sendo a = q1y (1) ...q m(+m +1) , m 1 . 1

k (n y Ora, p n +1 +1) | q1y (1) ...q m( m ) , usando o mesmo argumento anterior, sem perda de generalidade k (n y k y podemos supor que p n +1 +1) = q m(+m +1) ; logo p1k (1) ... p n ( n ) = q1y (1) ...q m( m ) . Mas, pela hiptese de 1

induo, temos que m = n e p ik ( i ) = p k ( j ) se i = j . Portanto, por induo, temos que a fatorao j nica vlida.

Corolrio 1.1.1: Seja a, b, c Z tal que MDC (a, b ) = 1 . Se a | c, b | c ento ab | c .


Este corolrio uma consequncia direta do teorema 1.1.1. De fato, como a e b no possuem fatores primos em comum e ambos dividem c, c possui os fatores de a e de b e, portanto, divisvel por ab.

15

Algumas concluses so fceis de imaginar:

Como todo inteiro tem uma fatorao nica em primos, ento dois inteiros sero primos entre si se e s se os primos que aparecem na decomposio de um deles no aparecem na do outro; O mximo divisor comum de dois inteiros o produto de todos os fatores primos em comum.

O resultado abaixo muito importante, pois ele um passo para a garantia de que podemos procurar nmeros primos arbitrariamente grandes.

Teorema 1.1.2: H infinitos nmeros primos. Demonstrao


Suponhamos que haja um nmero finito de primos. Ento, sejam p1 , p 2 ,..., p m a sequncia de todos os nmeros primos positiva existente. Nesse caso, n = p1 . p 2 ... p m seria divisvel por todos os primos. Como j listamos todos os primos existentes, n + 1 no primo. Ento pi divide n + 1 , para algum i tal que 1 i m . Mas, como pi divide n, pela proposio

1.1.2 pi divide 1, o que uma contradio, pois pi > 1 j que primo. Logo, h infinitos
nmeros primos.

Teorema 1.1.3: Teorema de Euclides.

Seja a, b, c Z . Se a | b.c e MDC (a, b ) = 1 ento a | c .


Demonstrao
k k Seja a = p1k (1) ... p n ( n ) a fatorao em primos de a. Ento p1k (1) ... p n ( n ) | b.c p ik ( i ) | b.c ,

para qualquer 1 i n . Mas, como MDC (a, b ) = 1 , ento pik ( i ) / b . Logo, pelo teorema 1.1.1 |

(TFA), pik (i ) | c , para qualquer 1 i n e, conseqentemente, a | c .

16

Por fim, demonstraremos uma proposio que implica em uma maneira eficiente de determinar o mximo divisor comum entre dois nmeros. Com isso encerraremos esta parte do captulo.

Proposio

1.1.5:

Seja

a , b, c Z .

Se

q Z

tal

que

a = b.q + c

ento,

MDC (a, b ) = MDC (b, c ) .


Demonstrao
Seja d1 = MDC (a, b ), d 2 = MDC (b, c ) . Por hiptese, temos que a = b.q + c c = a b.q . Alm disso, pela definio de diviso podemos escrever b = d 2 .b' e c = d 2 .c' . Mas, como
c = a b.q , pela proposio 1.1.2 temos que d 2 um divisor comum de b e de a. Finalmente,

como d1 = MDC (a, b ) , temos que d 2 d1 . Analogamente, podemos mostrar que d1 d 2 , o que implica que d1 = d 2 , isto , MDC (a, b ) = MDC(b, c ) . Pela proposio 1.1.1, sabemos que podemos escrever todo nmero inteiro a na forma
a = b.q + r ,0 r < b . Com isto MDC (a, b ) = MDC (b, r ) . Mas tambm podemos escrever

b = r.q'+ r ' ,0 r ' < b , obtendo assim MDC (b, r ) = MDC (r , r ') . Como existe um nmero finito de
inteiros r ,0 r < b , isso implica que, continuando este processo, obteremos rn = 0, rn 1 > 0 como o ltimo e penltimo restos dessas consecutivas divises. Como qualquer nmero divide zero e, usando consecutivamente a proposio 1.1.5, temos que MDC (a, b ) = MDC (rn , rn 1 ) , podemos chegar concluso que MDC (rn , rn 1 ) = rn 1 . Isto simplifica em muito o processo de obteno do mximo divisor comum, e usualmente, organizamos os restos e quocientes consecutivos na forma da seguinte tabela:

17

Algoritmo 1.1.1: Algoritmo Euclidiano para o MDC

q1 a
b

q2
..

. . .. . ..

q n 1 rn 2
0

r1

r1

r2

Donde conclumos que MDC (a, b ) = rn 1 . Eis, ento, um exemplo de aplicao deste algoritmo. Encontremos o MDC dos nmeros 248 e 786.

5 78 6 42 8 48 4 42 8

1 3 2

9 4 0

2 2

Portanto, conclumos que o mximo divisor comum entre os nmeros 248 e 786 2. Na

seo 1.3 veremos uma aplicao muito til deste algoritmo.

1.2. Congruncia Mdulo m


Estudaremos, agora, a aritmtica modular, desenvolvida por Gauss, e que ser a principal ferramenta deste trabalho.

Definio 1.2.1: (Congruncia Mdulo m)

18

Seja a, b, m Z , m > 1 . Dizemos que a cngruo a b mdulo m (denotamos

a b (mod m ) ) se m | a b . Analogamente, dizemos que a no cngruo a b mdulo m


( a b (mod m ) ) se m / a b . | /
J exclumos os casos em que m 1 , pois, claramente, se um nmero divisvel por m, tambm ser pelo oposto de m. Por tanto, basta estudarmos os casos de congruncia para valores positivos de m. Os casos m = 1 e m = 0 so irrelevantes. Um resultado simples o seguinte: pela proposio 1.1.1 (diviso euclidiana), dado um a inteiro podemos escrev-lo como a = q.m + r , logo temos que a r = q.m , isto m | a r . Portanto, qualquer inteiro cngruo mdulo m ao seu resto na diviso por m. Por convenincia, ento, daremos mais uma definio relativa congruncia modular:

Definio 1.2.2: (Reduo Mdulo m)

Seja a, m Z , m > 0 , e seja a = q.m + r ,0 r < m . Ento, dizemos que r a reduo


mdulo m de a (denota-se a mod m ).
Ora, devido s propriedades de diviso, manipulao de congruncias muito semelhante manipulao de igualdades. De fato, todas as propriedades conhecidas na igualdade so vlidas para as congruncias, com exceo de uma. Se tivermos c.a = c.b, c 0 podemos dizer que a = b . No entanto, lidando com congruncias isso pode no acontecer, por exemplo:

2.5 2.3(mod 4) , mas 5 3(mod 4) /


Isto acontece porque uma das condies do teorema 1.1.3 (teorema de Euclides) no verdadeira: o mximo divisor comum de m e c no um. Ora, c.a c.b(mod m ) o mesmo de dizer que m | c.a c.b e, colocando o c em evidncia, temos m | c.(a b ) . Neste ponto h dois casos: se MDC (m, c ) = 1 ento, pelo teorema 1.1.3, m | (a b ) . Se MDC (m, c ) > 1 , todavia, isso pode no acontecer, como no exemplo acima. Portanto, para o cancelamento do produto, temos que tomar um cuidado a mais em congruncias: c.a c.b(mod m ), c 0 implica a b(mod m ) s se MDC (m, c ) = 1 . 19

Enfim, listemos as propriedades da congruncia:

20

Propriedades 1.2.1:

Para a, b, c, m Z , m > 1 temos: 1. a a(mod m ) 2. a b(mod m ) b a (mod m ) 3. a b(mod m ), b c(mod m ) a c(mod m ) 4. a b(mod m), c d (mod m) a + c b + d (mod m) 5. a b(mod m ) a + c b + c(mod m ), c 6. a b(mod m ), c d (mod m ) ac bd (mod m ) 7. a b(mod m ) a n b n (mod m ), n 0 8. ac bc(mod m ), c 0 e MDC (c, m ) = 1 a b(mod m )
Como procedemos anteriormente, estas so propriedades elementares e no sero demonstradas. A nica que merece ateno especial a propriedade 1.2.1.8, a qual esta j foi discutida logo acima. Demonstremos, agora, uma interessante propriedade relativa a congruncias modulo m.

Proposio 1.2.1: Se a, m Z tal que m > 1 tal que MDC (m, a ) = 1 , ento temos que o conjunto

de redues modulo m R = { .a mod m,2.a mod m,..., (m 1).a mod m} igual ao conjunto 1

{1,2,..., m 1} .
Demonstrao
Dados r1 , r2 { ,2,..., m 1} tais que ar1 ar2 (mod m ) temos, pela propriedade 1.2.1.8, 1 que r1 r2 (mod m ) logo r1 = r2 . Dessa forma, podemos concluir que as redues pertinentes a R so incongruentes duas a duas, isto , R tem exatamente m 1 elementos. Alm disso, nenhuma dessas redues resultar em zero, j que MDC (m, a ) = 1 e as redues so feitas dos produtos de

a por elementos de { ,2,..., m 1} . Sendo assim, para qualquer r R temos 1 r < m 1 . 1

Portanto, R = { ,2,..., m 1} . 1

21

essencial que MDC (m, a ) = 1 para que esta proposio seja verdadeira. Por exemplo, se
m = 6 e a = 2 , ento 3 2 mod 6 = 0 .

Teorema 1.2.1: O Pequeno teorema de Fermat.

Seja p um primo positivo e a um inteiro tal que p / a . Ento, a p 1 1(mod p ) . |


Demonstrao

Como p primo, temos que MDC ( p, a ) = 1 . Logo, pela proposio 1.2.1 temos que

R = { .a mod p,2.a mod p,..., ( p 1).a mod p} = { ,2,..., p 1}. Logo, 1 1


rR

r = ( p 1)! ( p 1)!.a

p 1

mod p

Como p primo com todo nmero positivo menor do que ele, temos que MDC (( p 1)!, p ) = 1 logo, pela propriedade 1.2.1.8 (cancelamento do produto), temos que a p 1 1(mod p ) .

Corolrio 1.2.1: (2 Forma do Pequeno teorema de Fermat)


Seja p um primo positivo e a um inteiro qualquer. Ento a p a(mod p ) .

Demonstrao
Temos dois casos para a: 1. p / a. | Neste caso, pelo teorema 1.2.1, a p 1 1(mod p ) , logo

a.a p 1 a.1(mod p ) a p a(mod p ) 2. p| a. Neste caso,

a 0(mod p )

implicando

que

a p 0(mod p )

logo

a p a(mod p ) .

Notemos que a recproca do teorema 1.2.1 no verdadeira. Por exemplo, 88 1(mod 9 ) , no entanto, 9 no primo. Todavia, podemos fazer uma generalizao do teorema 1.2.1. De fato, isto foi feito no famoso teorema de Euler. Para tratarmos deste resultado, primeiramente definamos uma funo:

22

Definio 1.2.3: (Funo de Euler)


Chamamos de Funo de Euler ou Funo Tociente a funo : N a N tal que (n ) a quantidade de inteiros positivos a < n onde o mximo divisor comum com n 1. Por exemplo, (6 ) = 2 pois o conjunto de todos os a Z + tal que a < 6 e MDC (a,6) = 1 P = { ,5}. Claramente, seja p um nmero primo positivo, temos ento que ( p ) = p 1 , j que 1 MDC (a, p ) = 1, a : 1 a < p .

Proposio 1.2.2:
1. 2. Se n = p k , ento (n ) = p k 1 .( p 1) Se n = p q ento (n ) = ( p ) (q )

Demonstrao
1. Seja a : 0 a < p k . Ora, dizer que MDC a, p k 1 equivalente a dizer que

p | a . Logo, se esta condio for verdadeira, temos que a = p.a ' , onde 0 a ' < p k 1 . Portanto, h

p k 1 nmeros divisveis por p menores do que p k . Logo, p k = p k p k 1 = p k 1 .( p 1) . 2. Notemos que se n = p.q , onde p e q so primos, todos os mltiplos a de p ou de q

( )

menores ou iguais a n formam o conjunto {p,..., (q 1) p, q,..., ( p 1)q, n} . Este conjunto possui, ento p + q 1 elementos. Logo,

(n ) = p.q ( p + q 1) = ( p 1) (q 1) ,

isto

(n ) = ( p ) (q ) .
k k Iremos assumir a partir daqui que se n = p1k (1) ... p n (n ) ento (n ) = p1k (1) ... p n (n ) . A

) (

demonstrao deste resultado pode ser encontrada em [COUTINHO 2001].

Proposio

1.2.3:

Sejam

a, m Z

tal

que

m >1

MDC (m, a ) = 1 ,

seja

X = {x1 , x 2 ,..., x (m ) } = x Z + | x < m, MDC ( x, m ) = 1 , ento temos que o conjunto de redues modulo m R = {x1 .a mod m, x 2 .a mod m,..., x (m ) .a mod m} igual ao conjunto X.
23

A proposio acima apenas uma generalizao da proposio 1.2.1, e sua demonstrao totalmente anloga.
Teorema 1.2.2: Teorema de Euler.

Sejam a, m Z tal que m > 1 e MDC (m, a ) = 1 , ento temos que a (m ) = 1(mod m ) .
Demonstrao

Seja X = {x1 , x 2 ,..., x (m ) } = x Z + | x < m, MDC ( x, m ) = 1 . Pela proposio 1.2.3, temos que X = R , onde R = {a.x1 mod m, a.x 2 mod m,..., a.x (m ) mod m}. Logo, rR
a (m ) 1 mod m .

r = (x ) (x )..a (
x X x X

m)

mod m . Como todo x X primo com m, temos que

o produtrio deles tambm . Logo, pela propriedade 1.2 .1.8 (cancelamento do produto),

Existem diversos outros resultados que podemos obter usando apenas a teoria que foi discutida at agora. No entanto, por convenincia iremos discutir estes resultados quando falarmos de teoria dos grupos.

1.3. Sistemas de Congruncia


A resoluo de sistemas de congruncia de suma importncia neste trabalho. Muitos dos resultados necessitaro do chamado teorema chins dos restos, alm de outros resultados que dependem deste estudo. A princpio, estudaremos equaes do tipo aX b (mod m ) e, em seguida, determinaremos um mtodo para a resoluo de sistemas de congruncia e demonstraremos o teorema chins dos restos. Comecemos, ento, provando um teorema importante para estes resultados.

24

Teorema 1.3.1: Teorema de Bezout.

Se a, b, d Z tal que d = MDC (a, b ) , ento existem inteiros r e s tais que d = ra + sb .


Demonstrao
Seja d 0 o menor inteiro positivo da forma d 0 = ra + sb . Mostremos que d 0 = MDC (a, b) . Pela proposio 1.1.1, temos a = d 0 q + r0 ,0 r0 < d 0 . Isolando r e substituindo d 0 temos:

r0 = a d 0 q = a (ar + bs )q = a (1 rq ) + b( sq )
Notemos ento que r0 da mesma forma que d 0 e 0 r0 < d 0 . Mas d 0 o menor inteiro

positivo nesta forma, por definio. Logo, r0 = 0 , isto , d 0 divide a. Analogamente d 0 divide b, isto
, d 0 divisor comum de a e b. Por outro lado, seja d1 qualquer outro divisor comum de a e b, segue que

d1 divide ax + by, quaisquer que sejam os inteiros x e y. Em particular, d1 divide d 0 = ar + bs , de modo


que d1 d 0 . Portanto, d 0 o mximo divisor comum de a e b, e o teorema est demonstrado.

Corolrio 1.3.1: Seja a, b, c inteiros. A equao c = ra + sb tem solues inteiras se e s se

MDC (a, b ) | c .
Demonstrao

Seja d = MDC (a, b ) . Suponha c = ra + sb ter soluo. Mas d | ar + bs, r , s Z o que implica que d | c . Agora, suponha que d | c . Seja, ento, c = d .c' . Notemos que, pelo teorema 1.3.1 (Teorema de Bezout), a equao d = r '.a + s '.b tem soluo. Logo, multiplicando ambos os lados por c ' temos d .c' = (r '.c').a + (s '.c').b . Logo, r = r '.c' , s = s '.c' uma soluo vlida para
c = ra + sb , e o teorema est demonstrado.

25

Teorema 1.3.2: A congruncia aX b (mod m ) tem soluo se e s se mdc(a, m ) | b . Demonstrao

Notemos que aX b (mod m ) aX b = m.q aX + ( q )m = b . Logo, pelo corolrio 1.3.1, a equao aX + ( q )m = b tem solues inteiras se, e s se, mdc(a, m ) | b . Portanto, aX b (mod m ) s tem soluo sob a mesma condio. Uma equao com no mnimo duas variveis onde interessam apenas as solues inteiras chamada de equao diofantina. Notemos que uma congruncia com uma incgnita nada mais do que uma equao diofantina, como se pode ver na demonstrao do teorema 1.3.2. Claro, existem muitos resultados possveis para uma congruncia do tipo aX b (mod m ) , no entanto todos tm uma forma comum. Pelo teorema 1.3.1, podemos escrever d = mdc(a, m ) com d = ra + sm; r , s Z . Ora, a congruncia acima s admite soluo caso d | b , ento existe b': b = d .b' . Multiplicando por b'
b b de ambos os lados em d = ra + sm obtemos b'.d = r.b'.a + s.b'.m b = r. .a + s. .m . d d Assim, uma soluo vlida para a congruncia X = r.

b . Notemos que o nico resultado d

interessante o coeficiente de a, o coeficiente de m, equivaleria ao quociente de uma diviso euclidiana por m, mas, como estamos lidando com uma congruncia, isso pode ser descartado. Atentemos, ento, para o seguinte fato: a. m m = a'.d . a '.m 0(mod m ) . Isto muito d d

conveniente, pois, como X multiplicado por a na congruncia aX b (mod m ) , caso somemos a soluo X = r. isso, b a um Y Z tal que a.Y 0(mod m ) , obteramos outra soluo. Mais do que d

m o menor nmero que atende a.Y 0(mod m ) . Isto um resultado simples de ser d

observado. Por tudo isso, podemos dizer que o conjunto soluo da congruncia aX b (mod m )
r.b + m.t : S = ,t Z . d

26

Em resumo, podemos encontrar as solues para a equao aX b (mod m ) simplesmente escrevendo d na forma d = ra + sm; r , s Z . Enunciamos, ento, as concluses obtidas como um teorema.

Teorema 1.3.3: Seja aX b (mod m ) , a e b constantes, uma congruncia solucionvel, e seja


d = MDC (a, m ) tal que d = ra + sm; r , s Z . Ento, o conjunto soluo para esta congruncia
r.b + m.t S = ,t Z . d

Para ilustrar tal teorema, vejamos o seguinte exemplo: Seja 4. X 6(mod 10) . Notemos que MDC (4,10) = 2 , 2 | 6 e 2 = 3.4 1.10 . Portanto, podemos concluir que estamos lidando com uma congruncia solucionvel tal que seu conjunto
3.6 + 10.t soluo S = = 3.3 + 5.t = 9 + 5.t , t Z = {...,6,1,4,9,...} . 2

Neste exemplo, no foi difcil deduzir a forma desejada para MDC (4,10) = 2 , mas isso nem sempre ser to simples. Como, ento, fazer isso? Ora, o algoritmo euclidiano do mximo divisor comum a resposta. Suponhamos que queremos encontrar o mximo divisor entre a = 1760 e m = 5830 . Aplicando o algoritmo temos: 3 5830 1760 550 3 550 110 5

110
0

Pelo mtodo do algoritmo, sabemos que os quocientes esto na primeira linha e os restos na terceira. Assim, podemos escrever o seguinte:
110 = 1760 3 550 . Com os resultados seguintes da tabela, podemos reescrever 550 e

substituir na equao, obtendo: 110 = 1760 3 (5830 1760 3)

27

Dessa forma, obtemos uma expresso composta de nossos nmeros iniciais: 1760 e 5830. A ideia encontrar uma expresso de tal forma que o MDC seja igualado soma destes nmeros multiplicados por coeficientes r e s. Ora, basta ento mant-los na expresso e agrupar os termos semelhantes, da seguinte forma:

110 = 1760 3 (5830 1760 3) 110 = 1760 3 5830 + (3 3) 1760 110 = (1 + 9 ) 1760 3 5830 110 = 10 1760 3 5830 E o processo foi concludo. Sendo d = 110 o MDC entre a e m, o escrevemos sem maiores esforos na forma d = r.a + s.m . Assim, caso fosse de nosso interesse resolver uma congruncia linear como 1760. X 770 (mod 5830) , poderamos observar que 110 | 770 e, portanto, a equao tem soluo. Tendo em mos o MDC na forma desejada, poderamos escrever o conjunto soluo como:
10 770 + 5830.t S = = 70 + 53.t , t Z = {... 36,17,70,123,176...}. 110

Bem, com isso fica razoavelmente ilustrada a aplicao dos teoremas acima para a resoluo de uma congruncia com uma incgnita. Todavia, vale salientar um detalhe: o mtodo abordado para encontrar os coeficientes r e s muito custoso, computacionalmente falando. Para casos onde os nmeros a e m forem muito grandes, este clculo exigir o armazenamento de muitas informaes. No captulo 4 um mtodo mais razovel ser demonstrado, conhecido como
Algoritmo Euclidiano Estendido. Este algoritmo no s calcula o mximo divisor comum, como

tambm os coeficientes r e s, tudo isso de uma maneira bem mais eficiente. Veremos agora como resolver um sistema de congruncias.

28

Teorema 1.3.4: Teorema Chins dos Restos.

X b1 (mod m1 ) X b (mod m ) 2 2 Seja , b1 , b2 ,...., bn , m1 , m2 ,..., mn Z um sistema de congruncias tal que ... X bn (mod mn ) m1 , m2 ,..., mn so primos entre si dois a dois. Ento existe uma nica soluo s tal que 0 s < m1.m2 ...mn .
Demonstrao

Inicialmente, seja M = m1 ...mn e M i =

M . Como m1 , m2 ,..., mn so primos entre si, mi

temos que M i e mi tambm so. Logo, pelo teorema 1.3.1, podemos dizer que 1 = ri .M i + s i .mi , para algum par (ri , s i ) Z Z . Ento, mostremos que x0 = b1 .r1 .M 1 + ... + bn .rn .M n uma soluo para o sistema. Primeiramente, notemos que M i 0 (mod m j ) quando i j , pois m j | M i . Logo, x0 bi .ri .M i (mod mi ) . Mas, como 1 = ri .M i + s i .mi , temos que ri .M i 1(mod mi ) . Ora, a partir disso, temos ento que bi .ri .M i bi (mod mi ) para i : 1 i n . Com isso, provamos que x0 satisfaz todas as congruncias. Alm disso, dado x1 bi (mod mi ) , temos que

x1 bi x0 (mod mi ) x1 x0 (mod mi ) , portanto, x x0 (mod M ) , isto , h uma nica soluo entre 0 e M, de tal forma que qualquer outra congruente a ela em mdulo M.

1.4. Classes de equivalncia e o conjunto Zm


Para construirmos o conjunto Zm precisamos antes formalizar o que uma relao de equivalncia. Primeiramente, uma relao sobre A um vnculo estabelecido sobre dois elementos de A, via alguma regra. Formalmente, uma relao sobre A um subconjunto de
A A . Se (a, a') R A A , escrevemos a R a ' . Exemplos de relaes so as desigualdades,

conhecida nos nmeros reais.


29

Definio 1.4.1: Relao de Equivalncia

Dada uma relao ~ sobre A. Dizemos que ~ uma relao de equivalncia se valerem as seguintes propriedades: 1. 2. 3. Reflexiva: a ~ a; a A Simtrica: a ~ b b ~ a; a, b A Transitiva: a ~ b, b ~ c a ~ c; a, b, c A

Podemos exemplificar isto com a igualdade. De fato, ela respeita todas as propriedades acima. O paralelismo tambm uma relao de equivalncia e, mais interessante para ns, temos que congruncia mdulo m uma relao de equivalncia.
Definio 1.4.2: Classes de Equivalncia

Dados uma relao de equivalncia ~ sobre o conjunto A e a A , chamamos de classe de equivalncia o conjunto a = {b A : b ~ a}. Isto , o conjunto de todos os elementos equivalentes ao a pela relao ~.
Proposio 1.4.1: Sejam a, b classes de equivalncia de A pela relao ~. Temos que a ~ b , /

isto , a no equivalente a b, se e s se a b = .
Demonstrao

Ora, seja a ~ b . Suponhamos, por absurdo, que a b . Isto significa que c a b /

e, portanto, c a e c b , isto , c ~ a e c ~ b donde, pela propriedade transitiva, temos que

a ~ b , o que uma contradio. Agora seja a b = , e suponhamos por absurdo que a ~ b .


Mas, pela definio de classe, a b e a a , o que uma contradio.

30

Definio 1.4.3: Conjunto Quociente

Seja ~ uma relao de equivalncia sobre o conjunto A. Chamamos de conjunto quociente pela relao ~ o conjunto de todas as classes de equivalncia desta relao, e denotamos por
A . ~

Proposio 1.4.2: Sejam A um conjunto e ~ uma relao de equivalncia. Ento, A =

& a , aA ~

isto , A a unio disjunta de todos os elementos de

A . ~

Finalmente, notemos que a relao de congruncia uma relao de equivalncia, j que facilmente so verificadas as propriedades reflexiva, simtrica e transitiva.
Definio 1.4.4: Dado um inteiro m. O conjunto dos inteiros mdulo m, denotado por Z m ,

Z . (mod m )

Notemos que Z m = 0,1 ,..., m 1 para m maior que 1.


Definiremos em Z m uma operao de soma e uma de multiplicao baseada na soma + e na multiplicao demonstrao:
.

dos inteiros Z. Para isso necessitamos da seguinte proposio, de fcil

Propriedade 1.4.1: Se a = b e c = d em Z m , ento a + c = b + d e a c = b d .


Definimos a soma e a multiplicao em por: a b = a + b e a b = a b Notemos que a propriedade 1.4.1 fundamental para as definies acima. Para simplificar a notao, iremos nos referir a tais operaes simplesmente por + e .. fcil verificar as propriedades abaixo:

31

Propriedade 1.4.2: Sejam m Z , m > 1 e a , b , c Z m .


1. 2.

(a + b ) + c = a + (b + c ); (a + b ) = (b + a ) ;

3. a + 0 = a ; 4. a + a = 0 ; 5. 6. 7. 8.

( )

(a b ) c = a (b c ) ; (a b ) = (b a ); (a b ) = (b a ); (a + b ) c = a c + b c .
Notemos que no existe a, b Z , a, b > 1 tal que a b = 1 . No entanto, isso pode no

acontecer em Z m , por exemplo, no caso de m = 5 . Abaixo est a tabela de Z 5 com a operao produto.

Tabela da multiplicao em Z 5 . 0 1 2 3 4
Vejamos outro exemplo:

0
0 0 0 0 0

1
0 1 2 3 4

2
0 2 4 1 3

3
0 3 1 4 2

4
0 4 3 2 1

32

Tabela da multiplicao em Z 6 . 0 1 2 3 4 5 0
0 0 0 0 0 0

1
0 1 2 3 4 5

2
0 2 4 0 2 4

3
0 3 0 3 0 3

4
0 4 2 0 4 2

5
0 5 4 3 2 1

Neste exemplo, os elementos 2, 3 e 4 no admitem elemento que multiplicados por eles resultem em 1 (isto , nenhum deles tem inverso). Mais do que isso: cada um deles, multiplicado por um dado elemento no nulo, resulta no elemento nulo! Isto no acontece por acaso. De fato, o motivo est exatamente na estrutura da relao de equivalncia que rege este conjunto quociente.

Definio 1.4.5: Chamamos de divisor de zero todo elemento no nulo a Z m tal que a.b = 0 ,
para algum b Z m no nulo. Alm disso, chamamos de elemento inversvel todo elemento a Z m tal que a.b = 1 , para algum b Z m .

Proposio 1.4.3: Seja a Z m um elemento no nulo, a um divisor de zero se e s se

MDC (a, m) = 1 . /
Demonstrao
Seja a um divisor de zero. Ento a.b = 0 , para algum b no nulo. Isto , m divide a.b , pois a.b 0 (mod m ) . Ora, suponha MDC (a, m ) = 1 m | b b = 0 , o que um absurdo. Logo,

MDC (a, m) = 1 . /
Seja ento MDC(a, m) = 1 . Como a no nulo, ento MDC(a, m) < m . Seja ento / d = MDC (a, m) a = d .a' , m = d .m' mas ento a.m' = d .a'.m' = d .m'.a' = m.a' , Logo, m | a.m' a.m' = 0 . Como 0 < m' < m , ento, por definio, a um divisor de 0. 33

Proposio 1.4.4: Seja a Z m um elemento no nulo, a um elemento inversvel se e s se

MDC(a, m) = 1 , isto , se e s se a no for um divisor de zero.


Demonstrao
Seja a inversvel. Suponha, por absurdo, que a tambm um divisor de zero. Ento
a.b = 0 , para algum b no nulo. Como a inversvel, ento

a ': a.a ' = 1 , ento,

a'.a.b = a '.0 (a '.a ).b = 0 1 .b = 0 b = 0 , o que um absurdo. Logo, a no um divisor de zero. Analogamente, se a um divisor de zero, podemos verificar que ele no ser inversvel, como queramos demonstrar. Notemos que as definies de elemento inversvel e de divisor de zero se aplicam h diversos conjuntos no s aos conjuntos Z m . No entanto, para nosso trabalho s interessante destacarmos esta propriedade para este conjunto. Por fim, faamos uma definio til para alguns resultados posteriores:

Definio 1.4.6: Dado o conjunto quociente Z m . Definimos como U (m ) o conjunto de todos os


elementos inversveis de Z m , isto , U (m ) = {a Z m : a.b = 1 , b Z m }. Mais uma observao: todos os teoremas estudados at agora usando congruncias mdulo m continuam vlidos para o conjunto Z m , tais como o teorema 1.3.1 (Teorema de Fermat) e o teorema 1.3.2 (Teorema de Euler).

1.5. Grupos
Estudaremos agora os grupos. Grupo uma estrutura algbrica na qual, como veremos na seo 1.7, alguns casos de conjuntos da forma Z m se enquadram.

34

Definio 1.5.1: Grupo


Seja A um conjunto munido da operao *. Dizemos que (A, *) um grupo se as seguintes propriedades so atendidas: 1. 2. 3. Associativa: Elemento Neutro:

(a * b ) * c = a * (b * c )
e A : a * e = e * a = a, a A

Elemento Simtrico: a A, a 1 A : a * a 1 = a 1 * a = a

Daqui por diante, a menos de meno contrria, usaremos o smbolo e para representar o elemento neutro do grupo, como tambm assumiremos a notao a 1 para o simtrico de um elemento a e * como operao.

Definio 1.5.2: Grupo Abeliano (ou Grupo Comutativo)


Seja A um grupo. Dizemos que A um grupo abeliano se ele atende a seguinte propriedade: 4. Comutativa: a * b = b * a

Lema 1.5.1: Seja A um grupo. Ento:


1. 2. 3. Existe um nico elemento neutro; Para cada a A, !a 1 A , isto , existe apenas um nico elemento simtrico;
a, b, c A : a * c = b * c a = b , isto , vale a lei do cancelamento.

Demonstrao
1. Se e1 , e2 A so elementos neutros, ento e1 = e1 * e2 e e1 * e2 = e2 . Logo, e1 = e2 .
Sejam a11 , a 2 1 A elementos simtricos de a A . Ento temos:

Ou seja, existe um nico elemento neutro em A. 2.

a11 * a = e a11 * a * a 2 1 = e * a 2 1 a11 * a * a 2 1 = a 2 1 a11 * e = a 2 1 . a11 = a 2 1 . Ou seja, existe um nico elemento simtrico de a A .

Portanto,

3.

Sejam a, b, c A tais que a * c = b * c e c 1 A . Ento, temos:

a * c = b * c a * c * c 1 = b * c * c 1 a * e = b * e a = b . 35

Definio 1.5.3: Subgrupo


Seja A um grupo. Um subconjunto H de A chamado de subgrupo de A, se ele herda as propriedades de grupo de A em relao operao *. Isto , ele atende as seguintes propriedades: 1. 2. 3.
eH a * b H , a, b H

a 1 H para a H

Notemos que a * b * c A, a, b, c H , mas A um grupo e, portanto, vale a propriedade associativa. Isto , a * b * c = a * (b * c ) . Logo, pela segunda propriedade a * (b * c ) H e, portanto, tambm vale a associativa em H e, com isso, de fato H possui todas as propriedades de grupo. Caso A seja um grupo abeliano, um argumento anlogo pode ser usado para a propriedade comutativa, o que implicaria que H tambm seria um grupo abeliano.

Proposio 1.5.3: Se A um grupo finito e H um subconjunto de A, tal que:


1. 2.
eH

a * b H , a, b H

Ento H um subgrupo de A.

Demonstrao
De fato, pela definio 1.5.3, basta provarmos que vale a terceira condio de grupo e veremos que H realmente um subgrupo de A. Ora, seja f a : H a H dada por f a (b ) = a * b . Notemos que esta funo est bem definida devido hiptese 2. Alm disso, como A um grupo, esta uma relao de um-para-um ( f a (b1 ) = f a (b2 ) a * b1 = a * b2 b1 = b2 ). Ora, H finito, portanto f a uma bijeo de H em si mesmo. Logo, pela hiptese 1, temos que !c A : f a (c ) = e a * c = e . Tambm
a * c = e c * a * c = c c * a = e . Logo, c * a = a * c = e . Mas isso o mesmo de dizer que c

36

o simtrico de a. Portanto, a terceira condio da definio 1.5.3 vlida e a proposio est provada.

Definio 1.5.4: Sejam A um grupo abeliano e H um subgrupo de A. Dizemos que a b(mod H )


(l-se a cngruo a b mdulo H), para a, b A se a * b 1 H .

Lema 1.5.2: Sejam A um grupo abeliano e H um subgrupo de A. Ento:


1. 2. (mod H ) uma relao de equivalncia; Existe uma bijeo entre H e a classe de equivalncia a , a H .

Demonstrao
1. Vale a reflexiva, pois a * b 1 H a * b 1 a * a 1 = e H . Existe elemento simtrico, pois se

H b 1 * a H , e vale a transitiva pois se a * b 1 H e b * c 1 H

ento claramente a * c 1 H ; 2. Seja a = {b A : a b(mod H )} , ento, se b a b * a 1 = h H b = h * a . Seja f a : H a a : h a h * a . Ora, notemos que se f a (b1 ) = f a (b2 ) ento b1 = b2 , a H . Mas ento, f a uma bijeo de a com H.

Notao: o conjunto quociente ser denotado por

G , onde G um grupo e H um subgrupo de G, (mod H )

G . Definindo as operaes neste conjunto de maneira semelhante a que foi H


G , a * b = a * b , temos tambm que H

feita na seo 1.4 para o conjunto Z m , isto , para a , b

G ,* um grupo. H

37

Teorema 1.5.1: Teorema de Lagrange.

Se H um subgrupo de um grupo finito A ento |H| divide |A|, onde |H| e |A| significam o nmero de elementos de H e A, respectivamente. Alm disso, o nmero de classes de equivalncia em

A A . exatamente H H

Demonstrao

Seja a1 , a 2 ,..., a r todas as classes de equivalncia da relao (mod H ) . Ora, pela

proposio 1.4.2, A =

1 i r

Ua

A=

a
1i r

. Pelo lema 1.5.2, temos que a n faz uma bijeo com

H. Logo, a n = H e, portanto, A = r H para algum r Z , logo, |H| divide |A|.

Podemos tomar, por exemplo, o grupo multiplicativo

(Z ,)
* 11

e o conjunto

S = {a Z11 : a 5 = 1}. Facilmente nota-se que S um subgrupo S = { ,3,4,5,9}. Nota-se que, de 1


* fato, S = 5 divide Z11 = 10 .

1.6. Grupos Cclicos


Dentre os grupos, temos um caso especial denominado grupo cclico. Trabalharemos muito com grupos cclicos nos conjuntos Z m . Nesta seo definiremos o que grupo cclico assim como as propriedades existentes, necessrias para a prxima seo.
Definio 1.6.1: Sejam A um grupo e a um elemento de A. denominamos a i como a potncia i de a, i Z + sendo que: a 0 = e e a i = a * a i 1 . Alm disso, definimos a i = (a 1 ) .
i

38

Lema 1.6.1: Sejam A um grupo, a A e i, j Z : i, j 0 . Ento:


1. 2. 3.

(a )
i

= a i

a i+ j = a i * a j Se a, b A satisfaz a * b = b * a , ento (a * b ) = a i * b i .
i

Demonstrao

1. a i = a 1 . Como a.a 1 = e , temos que a 1 * a i = e . Portanto, (a i ) 1 = a i ;


i i

( )

( )

2. a i * a j = a i + j vlido para i + j = 2 . Suponhamos vlido para i + j 2 e provemos para i + j + 1 . Ora, a i + j +1 = a * a i + j , pela definio de potncia. Mas, pela hiptese de induo,
a i * a j = a i + j , donde a * a i + j = a * a i * a j = a i +1 * a j .

3. Neste item estamos assumindo a propriedade comutativa. Com isso em vista, temos que (a * b ) = (a * b ) * ... * (a * b ) = a4...4a * b4...4b = a i * b i . * * * * 1442443 1 2 3 1 23 4 4 i vezes i vezes i vezes
i

Para o prximo item, sendo A um grupo e

a A , definamos o conjunto

a = a i : i Z = e, a, a 1 , a 2 , a 1 , a 3 , a 1 ,... , como o conjunto gerado por a.

( )

( )

Proposio 1.6.1: Sejam A um grupo e a A . Ento a um subgrupo comutativo de A, e ele

chamado de subgrupo gerado por a.


Demonstrao

Por definio de potncia, h elemento neutro no conjunto, no caso a 0 . Se b, c a ento b = a i e c = a j , i, j Z , logo b * c = a i * a j = a i + j a . Alm disso, dado a n a , temos que a n a , pela prpria definio de a . Portanto, a um subgrupo de A. Por

fim, notemos que b * c = a i * a j = a i + j = a j +i = a j * a i = c * b , isto , a comutativo.

39

Definio 1.6.2: (Grupo Cclico)

Dizemos que um grupo A cclico se existe a A tal que A = a . Um elemento a A com esta propriedade chamado de elemento gerador de A ou raiz primitiva de A. Um exemplo de grupo cclico (U (5), ,1 ) , isto , o grupo dos elementos inversveis em Z 5 sobre a multiplicao. Notemos que, para U (5) , temos que definio acima, U (5) cclico.
Definio 1.6.3 (Ordem de a)

2 = { ,2,4,3} = U (5) e, pela 1

Seja A um grupo e a A . A ordem de a em A, denotada por ord A a , definida como:


a , se a finito , caso contrrio Alm disso, se A = U (Z m ) , ento denotamos sua ordem por ord m a

Podemos definir a ordem de um a A como o menor i Z : i > 0 onde a i = e , caso o grupo gerado seja finito. De fato, se a um elemento de ordem finita e i o menor inteiro tal que a i = e , ento, para qualquer j Z , temos a j = a i j ' * a r para certos j ' , r Z com 0 r < i , mas a i j ' = e , donde a j = a r . Alm disso, se r1 , r2 Z + so menores do que r temos, claramente, que a 1 a 2 , o que demonstra que
r r

a = {a r : 0 r < i}. Diante disso, notemos que, se um

grupo A finito, ele ser cclico caso exista um a A tal que ord A a = A .

Proposio 1.6.2: Seja A um grupo finito e a A . Tem-se que a m = 1 se, e s se ord A a | m .

Notemos que esta proposio uma consequncia do teorema 1.5.1, afinal, pela definio de ordem, ord A a = a , j que A finito.

40

Proposio 1.6.3: Se A um grupo abeliano finito, a, b A tal que r = ord A a e s = ord Ab ,

ento, c A tal que ord Ac = MMC (r , s ) .


Demonstrao

Sejam m = MMC (r , s ) e m = r '.s ' , r ' , s ' Z

tal que MDC (r ' , s ') = 1 e r ' | r , s ' | s ,

(consequncia do teorema 1.1.1 (TFA)), isto , r = u.r ' e s = v.s ' , para certos u, v Z . Alm disso, sejam t , q, c Z tal que m = rt = sq e c = a u .b v . Iremos mostrar que c possui ordem MMC (r , s ) em A. Para isso, tomemos n = ord A c , e mostremos que n = m . Como A abeliano, temos que: c m = (a u * b v ) = a um * b vm = (a r ) * (b s ) = e , ento n | m pela proposio 1.6.2.
m ut vq

Mostraremos agora que r ' e s ' dividem n. Com isso, como m = r '.s ' e MDC (r ' , s ') = 1 , teremos que m | n donde, m = n , como queramos demonstrar. Como n = ord A c , temos e = c n = a un * b vn . Ento e = c n.r ' = a (r '.u ).n * b v.n.r ' . Como r '.u = r a ordem de a, temos que e = b v.n.r ' donde, pela proposio 1.6.2,

ord A b | v.n.r ' . Mas

ord A b = s = s '.v , ento

s '.v | v.n.r ' s ' | n.r ' . Por conseguinte, como

MDC (r ' , s') = 1 , s ' | n . A demonstrao de que r ' | n anloga.

1.7. Grupos em Zm.


Para o nosso trabalho, como j dito, interessa analisarmos os conjuntos quocientes Z m . De fato, grande parte dos resultados ser obtida atravs deles.

Proposio 1.7.1: Se p primo ento Z * , um grupo abeliano munido da multiplicao. p

Proposio 1.7.2: Se p primo e k inteiro ento U p k , um grupo abeliano munido da

( ( ))

multiplicao.

41

* Estes so resultados simples. Afinal, sabido que a multiplicao em Z m , possui

elemento neutro (unidade), associativa e comutativa. Caso m seja primo, notemos que tambm
* h inverso para todo elemento a Z m , pois MDC (a, m) = 1 , e na proposio 1.7.2 j estamos

tomando apenas os elementos inversveis. Agora, os resultados abaixo so de importncia bem maior. Em alguns deles iremos usar a notao de combinao C np , pois precisaremos expandir binmios de Newton, isto , expresses do tipo (a + b )n . Abaixo enunciaremos o necessrio quanto a isso.

Definio 1.7.1: Definimos uma combinao de n elementos em um agrupamento p a p por C np .

Mostra-se que uma combinao C np exatamente dado por:

n! . Outro resultado conhecido p!(n p )!

Proposio 1.7.3: Dado o binmio de Newton (a + b ) , podemos expandi-lo e escrev-lo como


n (a + b )n = C p .a n p .b p p =0 n

= a n + n.a n 1 .b + C 2n a n 2 .b 2 + ... + n.a.b n 1 + b n .

Esta proposio pode ser provada por induo. Por conseguinte, passaremos para as ltimas demonstraes deste captulo.

42

Teorema 1.7.1: Teorema da Raiz Primitiva.

Se p primo ento o grupo Z * , cclico. p

Demonstrao
Basta mostrar que existe a Z * tal que ord p a = Z * = ( p ) = p 1 , isto , existe p p elemento gerador de Z * . p Para p {2,3} obviamente vlido. Seja, ento, p 5 . Dado, a Z * , temos dois casos a p analisar: 1. 2.
k = ord p a = p 1 . Neste caso, no h o que demonstrar; k = ord p a < p 1 . Neste caso, seja H = 1 , a , a 2 ,..., a k 1 o conjunto das solues

para a equao a k = 1 . Ora, Z * H b Z * H . Como b no uma soluo para p p


a k = 1 , pelo proposio 1.6.2 temos que ord p b / ord p a . Pela proposio 1.6.3, temos que |

existe c Z p tal que ord p c = MMC (ord p a, ord p b ) e, como ord p b / ord p a , temos que |
ord p c > max{ord p a , ord p b}. Como as ordens de a e b no se dividem, temos que ord p c > max (ord p a , ord p b ) .

Usando

sucessivamente

este

argumento,

obrigatoriamente

encontraremos um c' Z * : ord p c' = p 1 . Do contrrio, haveria infinitos elementos bn tal que p
p 1 > ord p bn > ord p bn 1 o que uma contradio, pois Z * finito. p

43

Corolrio 1.7.1: Se p primo ento U p 2 , cclico. Demonstrao


Pelo teorema 1.7.1, U ( p ) cclico. Logo a U ( p ) : ord p a = p 1 . Seja ento t = ord 2 a . Como a t 1 mod p 2 a t 1(mod p ) p 1 | t . Alm disso,
p

( ( ))

t | p 2 . Logo, t = p 1 ou t = p.( p 1) alm disso, ord p (a + p ) = p 1 , pois ord p a = p 1 ,


logo ord
p2

( )

(a + p ) =
p

p 1 ou ord

p2

(a + p ) = p ( p 1) .

Caso ord 2 a = p( p 1) = p 2 no h o que demonstrar pois, de fato, U p 2 cclico. Vamos supor ento que ord 2 a = p 1 . Neste caso, em U p 2 , temos:
p

( )

( )

( )

a p 1 = 1 , logo (a + p )

p 1

2 = a p 1 + ( p 1).a p 2 . p + C p 1 .a p 3 . p 2 + ... + p p 1 . No entanto,

p 2 | p k , k > 1 e, portanto, (a + p )

p 1

= a p 1 + ( p 1).a p 2 1 o que implica que a ordem de p + a

em U p 2 s pode ser p( p 1) = ( p 2 ) implicando que a + p = U p 2 , isto , U p 2 cclico.

( )

( )

( )

44

Corolrio 1.7.2: Se p primo e k inteiro positivo ento o grupo U p k , , 1 cclico. Demonstrao


Pelo corolrio 1.7.1, U p 2 cclico, isto , a U p 2 : ord 2 a = p 2 . Alm disso,
p

( ( ) )

( )

( )

( )

pelo teorema 1.7.1, U ( p ) tambm cclico. Portanto, este corolrio vlido para 1 k 2 . Suponhamos m 2 e que valha o resultado para 2 m k e provemos para k + 1 . Assim, por hiptese de induo, ord k a = p k . Seja ento t = ord p

( )

p k +1

a . Como

a t 1 mod p k +1 a t 1 mod p k p k | t .

( )

Alm

disso,

pelo

teorema

1.2.2,

p k +1

1 mod p k +1 , o que implica que t | ( p k +1 ) . Logo, t = p k ( p 1) ou t = p k +1 ( p 1) .

Provemos ento que t p k ( p 1) . Pelo

teorema

1.2.2,

p k 1

1 mod p k 1 ,
p k 1

isto

p k 1 .n = a

p k 1

ento

p k 1

= p k 1 .n + 1, n Z . No entanto, a

1 mod p k , logo p k / p k 1 .n + 1 1 ento | /

p k / p k 1.n , o que implica que p / n . Como p k = p k 1 . p , podemos ainda dizer que | |

( ) (
k 1

pk

=a

p k 1 p

= p k 1 .n + 1

mas

(1 + p

.n

2 = 1 + pnp k 1 + C p n 2 p 2 k 2 + ... + p pk p .

2 Notemos que p k +1 | p i (k 1) , i > 2 , j que k 2 . Alm disso, p | C p e, portanto, p k +1 tambm 2 divide C p . p 2 (k 1) . Logo, 1 + p k 1 .n

1 + n. p k (mod p k +1 ) . Finalmente, como p / n temos |


pk

(1 + p

k 1

.n

1 mod p k +1 . Mas isto o mesmo de dizer que a /

1 mod p k +1 , isto , /

t p k ( p 1) . Com isso, t = p k +1 ( p 1) e a = U p k +1 .
Portanto, por induo, temos que U p k cclico, para qualquer k positivo.

( )

45

Corolrio 1.7.3: Se k , p, m Z tal que k > 0 , p primo e m > 1 , ento o nmero de solues

para a congruncia x m 1 mod p k MDC m, p k .


Demonstrao
Seja X = a : a m 1 mod p k . Primeiramente, notemos que 1 X e, para qualquer

)}

x, y X , temos que x y X donde, pela proposio 1.5.3, X um subgrupo de U p k . Pelo teorema 1.5.1 (Teorema de Lagrange), X
tal
k

( )

( ) ( ) d = MDC (m, ( p )) . Alm disso, pelo corolrio 1.7.2, U ( p ) cclico, donde g U ( p ) que ord g = ( p ). Assim, se ( p ) = d ' para algum ' Z , ento ord g = d e
X
divide U p k = p k , donde temos que
k k k k

'

pk

pk

g 'd 1 mod p k , isto , g ' X . Portanto, X = MDC m, p k .

1.8. Distribuio dos Primos


Precisaremos falar da distribuio de primos para podermos demonstrar o algoritmo AKS, o ltimo teste de primalidade deste trabalho. No entanto, trataremos deste tema da maneira mais simples possvel, pois esta uma das anlises mais complicadas da teoria dos nmeros. Em [DIETZFELBINGER 2004] podemos encontrar uma demonstrao do teorema de Chebychev da densidade dos primos. Este teorema diz que lim

(x )
x ln x

= 1 , onde (x ) uma

funo desconhecida, com domnio e contradomnio nos naturais, que retorna quantos primos existem at x. Em outras palavras, este teorema diz que, apesar de ( x ) , ela tende para x ln x . Logo, para valores altos de x temos boas aproximaes de ( x ) usando a funo x ln x . Para nossos objetivos, no entanto, no necessrio demonstrar este teorema, mas apenas uma verso simplificada dele, que pode ser encontrada em [COUTINHO 2004].

46

n Lema 1.8.1: Se n um inteiro positivo ento C 2 n =

pP 2 n

p ( )

kp

, onde P(2n ) o conjunto dos primos

2n n menores ou iguais a 2n, e k p = m 2 m . Alm disso, k p log 2 (2n ) / log 2 p . m>0 p p

Demonstrao

2n n Primeiramente notemos que, k p limitado, pois, se 2n < p m ento m 2 m = 0 . p p n Alm disso, se kt n para algum inteiro positivo t, ento t . Em outras palavras, existem k n k mltiplos de k menores do que n. Ento, dado um primo p temos que existem:

n p mltiplo de p

n
. . .

p 2 mltiplo de p 2 p m mltiplo de p m
k >0

Donde conclumos que p tem multiplicidade (n, p ) = n p k na fatorao de n!.


n Obviamente, esta somatria tambm finita. Por outro lado, C 2 n = (2n )! n!n!. Logo, a n multiplicidade de p para C2 n (2n, p ) 2 (n, p ) , isto ,

2n
k >0

p k 2 n p k . Assim,
k >0

n temos que k p = 2n p k 2n p k , isto , k p a maior potncia de p que divide C2 n . Como k >0 n isso vale para qualquer primo menor que n e C2 n um produto envolvendo todos eles, temos que n C 2n =

pP 2 n

p ( )

kp

Resta-nos demonstrar que k p log 2 (2n ) / log 2 p .

2n n 2n n Para tanto, observe que m 2 m < m 2 m 1 = 2 , para todo m tal que 2p p p p


p m 2n , donde conclumos que cada parcela de k p contribui no mximo em 1 soma total.
47

Portanto, o maior valor possvel para k p o maior s tal que p s 2n , donde podemos observar que s log 2 p log 2 (2n ) . Portanto, k log 2 (2n ) log 2 p , como queramos demonstrar.

Definio 1.8.1: Seja n um nmero inteiro positivo. Denotamos por n # o produto de todos os

primos menores ou iguais n. Caso n = 1 ento n # = 1 .


Agora, com o lema e a definio apresentados acima, podemos enunciar e demonstrar o teorema desta seo.

Teorema 1.8.1: Se n um inteiro positivo, ento 2 n 2n 2 . Demonstrao


m Seja m um inteiro positivo. Pelo lema 1.8.1, temos que C 2 m = pP 2 m

( )

p ( )

kp

, com

k p log 2 (2m ) log 2 p . Notemos que

k p log 2 (2m ) , pois p primo. Seja ento

r = log 2 (2m ) . Podemos dizer ento que C2mm divide


m Mas C 2 m =

pP 2 m

p ( )

= (2m )

# r

) , logo

m C 2 m (2m )

# r

).

2m(2m 1) (m + 2 )(m + 1)! # r ... 2 m , donde conclumos que 2 m (2m ) . 2 22 m 2 (m 1)

Em particular, 2 n 2n 2

((

))

# r

n 2 log 2 2n 2 log 2 2n 2

( )

((

) ), j que r = log (2n ).


# 2 2

log 2 n 2 log 2 n 2 # log 2 (2n 2 ) . Notemos que 2 Assim, n 2 1 para n 4 , ento n n

( )
#

( )

n log 2 (2n 2 ) 2 n (2n 2 ) para todo n 4 . Alm disso, notemos que, para n = 3 temos que
#

(2 3 )

2 #

= 18 # = 17.13 # > 2 3 e para n = 2 temos que (2 2 2 ) = 8 # = 7.5 # > 2 2 . Finalmente, para


#

n = 1 temos que 2 12

= 2# = 2 .

Portanto, para todo inteiro positivo n, temos que 2 n 2n 2 .

( )

48

1.9. Smbolo de Jacobi e Reciprocidade Gaussiana


Nesta seo falaremos de mais conceitos de teoria dos nmeros. Os resultados centrais sero as Leis da Reciprocidade Quadrtica de Gauss. Estudaremos tambm o Smbolo de Legendre, ferramenta til para alguns testes de primalidade. medida que avanarmos nestes conceitos, veremos que o conjunto das leis de reciprocidade so uma ferramenta fortssima para clculos em Z m .
Definio 1.9.1: (Resduo Quadrtico)

Sejam a e m inteiros tais que m no divide a, m positivo. Dizemos que a um resduo quadrtico mdulo m se, para algum inteiro b tivermos b 2 a(mod m ) . Caso contrrio, dizemos que a um resduo no quadrtico mdulo m.

Definio 1.9.2: (Smbolo de Legendre)

Sejam p um nmero primo maior do que 2 e a um inteiro qualquer. Denominamos a a a Smbolo de Legendre a expresso ( ) , sendo que ( ) = 0 se a for mltiplo de p, ( ) = 1 se a p p p a for um resduo quadrtico mdulo p e ( ) = 1 se a for um resduo no quadrtico mdulo p. p

Proposio 1.9.1: Se p primo e a um inteiro tal que a 2 1(mod p ) , ento a 1(mod p ) ou

a 1(mod p ) .
Demonstrao

Caso p seja 2 a soluo trivial, pois obviamente a 0(mod p ) e 1 1(mod 2) . Seja / ento p maior do que 2. Se a 2 1(mod p ) ento p | a 2 1 p | (a 1) (a + 1) . Como p primo maior do que 2, ento ou p | (a 1) , ou p | (a + 1) . Logo, a 1(mod p ) ou a 1(mod p ) .

49

Proposio 1.9.2: Critrio de Euler

Se a, p Z tal que p um primo mpar, ento a conjunto de resduos quadrticos mdulo p tem

p 1 2

a ( )(mod p ) . Alm disso, o p

p 1 elementos. 2

Demonstrao

Como j vimos, o grupo multiplicativo em U ( p ) cclico. Seja ento g um elemento gerador do grupo U ( p ) , isto , U ( p ) = { , g , g 2 ,..., g p 2 }. Tomemos ento um inteiro i tal que 1
2i < p , e notemos que g 2i U ( p ) um resduo quadrtico, pois g i

( )

g 2i (mod p ) , alm

disso, h

p 1 elementos desta forma em U ( p ) . Como g p 1 1(mod p ) , pela proposio 1.9.1 2


p 1 2

temos que g

1(mod p ) , donde podemos concluir que a


p 1 2

p 1 2

1(mod p ) se a = g 2i para

algum i inteiro, e a

1(mod p ) se a g 2i para qualquer i inteiro. p 1 resduos quadrticos mdulo p e que se a um resduo quadrtico 2
p 1 2

Portanto, temos ento a


p 1 2

1(mod p ) , do contrrio a
p 1 2

1(mod p ) . Por fim, caso p divida um inteiro a,


p 1 2

temos que a

0(mod p ) , donde conclumos que a

a ( )(mod p ) . p

Propriedades 1.9.1: (Smbolo de Legendre)

1. ( 2. (
3. (

a b a b ) = ( ) ( ) , para todo a, b, p Z . p p p
a b2 a ) = ( ) , para todo a, b, p Z tal que p / b . | p p a + cp a ) = ( ) , para todo a, c, p Z . p p

50

4. (

p 1 1 ) = ( 1) 2 , para todo p Z . p

Estas propriedades so decorrentes da definio de Smbolo de Legendre e das proposies apresentadas. Passemos agora para uma generalizao do Smbolo de Legendre.
Definio 1.9.3: Smbolo de Jacobi

a a a a Sejam a e m inteiros. Denominamos ( ) = ( ) ( ) ( ) como Smbolo de Jacobi, onde m p1 p2 pr p1 , p 2 ,..., p r a decomposio em primos de m. Com esta definio podemos listar algumas propriedades imediatas do Smbolo de Jacobi.
Propriedades 1.9.2: Smbolo de Jacobi

1. 2. 3. 4. 5. 6. 7.

a ( ) = 0 , para todo a, n Z tal que MDC (a, n ) > 1 . n ( ( ( ( ( a b a b ) = ( ) ( ) , para todo a, b, n Z . n n n a a ) = ( ) , para todo a, n, m Z tal que MDC (a, m ) = 1 . 2 n nm a + cn a ) = ( ) , para todo a, c, n Z . n n 2 2k a a 2 2 k +1 a 2 a ) = ( ) e( ) = ( ) ( ) para todo a, k , n Z com k 1 . n n n n n
n 1 1 ) = ( 1) 2 , para todo n Z . n

0 1 ( ) = 0 e ( ) = 1 , com n Z tal que n > 1 . n n

Iremos agora introduzir o necessrio para falarmos da Reciprocidade Gaussiana. Apresentaremos algumas definies que usaremos apenas nesta seo.

51

Definio 1.9.4: Seja n Z mpar e maior do que 2. Denominamos H n = 1,2,..., n 1

}o

Conjunto Medial de p. Alm disso, para cada a Z definimos para, cada a inteiro, o conjunto
n 1 S n (a ) por S n (a ) = a 1(mod n ), a 2(mod n ),..., a (mod n ) . Finalmente definimos k n (a ) 2

por k n (a ) = S n (a ) H n , isto , o nmeros de elementos de S n (a ) maiores do que

n 1 . 2

Notemos que a interseco entre H n e S n (a ) pode no ser vazia, mas H n (a ) = S n (a ) s se a 1(mod n ) . Alm disso, claramente S n (a ) = S n (b ) apenas quando a b(mod n ) .

Lema 1.9.1: Seja p primo. Se R = S p (a ) H p e T = S p (a ) H p , ento


p 1 & T = k p (a ) e H p = {p r : r R} T . 2

R = k p (a ) ,

Demonstrao

Primeiramente, evidente que R possui k p (a ) elementos, pela prpria definio de


p 1 k p (a ) , enquanto T possui k p (a ) . 2

Como T H p , provarmos que


rR

{p r : r R} H p

j que

p 1 p 1 , basta < r < p , e | T | + | R |= 2 2

{p r : r R} T = .

Supondo que isso no ocorra, existiria ao menos um p r a b(mod p ) e, portanto,

tal que

p r T . Mas isso significa que

r a b(mod p ) com b H p . No entanto, pela definio de R, r = a.c , com c H p . Da temos que a b + a c 0(mod p ) e ento a (b + c ) 0(mod p ) . Como p / a , isso s pode acontecer | caso p | (b + c ) . Enfim, como ambos pertencem a H p , chegamos a concluso que b = c = p 1 . 2

p 1 Assim, p r a r (mod p ) , o que implica que r = p r j que r < p , donde 2

52

conclumos que p r R e p r T , o que uma contradio j que R e T so disjuntos. Logo,


& H p = {p r : r R} T .

a k (a ) Lema 1.9.2: Sejam a, p Z tal que p um primo mpar. Se p / a ento ( ) = ( 1) p . Isto , | p a um resduo quadrtico mdulo p se e s se k p (a ) for par.

Demonstrao

Seja R = S p (a ) H p e T = S p (a ) H p . Pelo lema 1.9.1 temos que R possui k = k p (a )


p 1 & elementos, T possui k p (a ) e H p = {p r : r R} T . Seja ento b a (mod p ) . Em 2
Z p temos que:

k i = r t = ( 1) iH p rR tT Ou seja,

k r t = ( 1) rR tT

p 1 k i b = ( 1) b 2 i iH iH p p

iH p

i = ( 1) b
k

p 1 2

i em Z p . Como todos os elementos de H p so


iH p

inversveis, temos que ( 1) b Euler) temos que b


p 1 2

p 1 2

1(mod p ) . Finalmente, pela proposio 1.9.2: (Critrio de

b ( )(mod p ) . Logo, p

( 1)k ( b ) 1(mod p ) ,
p

o que implica que

b b k ( ) = ( 1) , j que ( ) = 1 . p p

53

p 1 2 Corolrio 1.9.1: Se p um primo maior ou igual a trs, ento ( ) = ( 1) 8 . p

Demonstrao

Primeiramente, analisemos a expresso

p2 1 . Precisamos garantir que este nmero seja 8

inteiro. Mas p mpar, logo p a(mod 8), a { ,3,5,7} . No entanto, a 2 1 mod 8 em todos os 1 casos, o que implica que p 2 1 sempre divisvel por 8 quando p mpar. Assim, basta verificarmos que k p (2) mpar toda vez que p2 1 for mpar. Ora, 8 p 1 . 2

S p (2) = {2,4,..., p 1} , o que acarreta que metade destes elementos so maiores do que Logo, k p (2) =

p 1 assumindo que p 1 seja divisvel por 4. Caso no seja, no difcil notar 4

p 1 que k p (2) = + 1 . Podemos generalizar dizendo que k p (2) = p 1 p 1 . 2 4 4

Agora basta verificar se

p2 1 par ou mpar juntamente com k p (2) . Para tanto, 8

usaremos a informao que obtivemos no incio da demonstrao, p a(mod 8), a { ,3,5,7} . 1 Sabendo que p = 8k + a , para determinar se k p (2) e cada caso em particular. 1. a = 1 : e 2. a = 3 : e p 1 p 1 8k + 1 1 8k + 1 1 = = 4k 2k = 2k , que par; 2 2 4 4 p 2 1 64k 2 + 16k = = 8k 2 + 2k par; 8 8 p 1 p 1 8k + 3 1 8k + 3 1 = = 4k + 1 2k = 2k + 1 , que mpar; 2 2 5 4 p2 1 so pares ou mpares analisemos 8

p 2 1 64k 2 + 48k + 8 = = 8k 2 + 6k + 1 mpar; 8 8 54

3. a = 5 : e

p 1 p 1 8k + 5 1 8k + 5 1 = = 4k + 2 2k 1 = 2k + 1 , que mpar; 2 2 4 4

p 2 1 64k 2 + 80k + 24 = = 8k 2 + 10k + 3 mpar; 8 8 p 1 p 1 8k + 7 1 8k + 7 1 = = 4k + 3 2k 1 = 2k + 2 , que par; 2 2 4 4

4. a = 7 : e

p 2 1 64k 2 + 112k + 48 = = 8k 2 + 14k + 6 par; 8 8

Portanto, o corolrio vlido.


Definio 1.9.5: Sejam a, n Z tal que n no divida a. Denominamos n (a ) a expresso

iH n

n =

i.a

i.a ((i.a ) mod n ) . n iH n

Lema 1.9.3: Sejam p, a Z . Se p e a so mpares tal que p primo e no divide a, ento


a (a ) ( ) = ( 1) p . p

Demonstrao
Seja R = S p (a ) H p e T = S p (a ) H p . Pelo lema 1.9.1 temos que R possui k p (a ) p 1 & elementos, T possui k p (a ) e H p = {p r : r R} T . Ento podemos dizer que 2

i.a = i.a ((i.a )mod p ) + r + t = p (a ) + r + t .


p iH p iH p rR tT rR tT

Alm disso,

i = ( p r ) + t = p k (a ) r + t .
p iH p rR tT rR tT iH p rR

Subtraindo a segunda da

primeira equao temos que: (a 1) i = p ( p (a ) k p (a )) + 2 r .

55

Como a mpar, a 1 par, donde vemos que a expresso acima um nmero par. No entanto, notemos que 2 r par e, nestas condies p (a ) k p (a ) obrigatoriamente par, o
rR

que implica que p (a ) e k p (a ) so simultaneamente pares ou simultaneamente mpares. a (a ) Portanto, pelo lema 1.9.2 podemos concluir que ( ) = ( 1) p . p

Teorema 1.9.1: Reciprocidade quadrtica para nmeros primos


p 1 q 1 p q Sejam p, q Z . Se p e q so primos mpares ento ( ) = ( 1) 2 2 ( ) . q p

q ( ), se p = 1 ou q = 1 em Z 4 p p Em outras palavras, ( ) = . q ( q ), se p = 3 e q = 3 em Z 4 p

Demonstrao
p 1 q 1 Seja M = (i, j ) : 1 i , 1 j . 2 2 Sejam ento . Reparemos que no h um par (i, j ) que M 2 = {(i, j ) M : i.q < j. p} M 1 = {(i, j ) M : j. p < i.q}

satisfaa a equao i.q = j. p , pois isso significaria que p divide i, o que uma contradio pois p < i . Ento podemos dizer que: p 1 q 1 & M1 M 2 = M M1 + M 2 = M = 2 2 Assim, fixando a incgnita i, o nmero de pares (i, j ) M 1 i.q , logo: p M1 =

1 i p 1

i.q = (q ) . p p
2

Analogamente, M 2 = q ( p ) . Por conseguinte, pelo lema 1.9.3:

( 1)

p 1 q 1 2 2

= ( 1)

p ( q )+ q ( p )

p q = ( )( ) q p

56

p Portanto, ( ) = ( 1) q

p 1 q 1 2 2

q .( ) . p

Teorema 1.9.2: Reciprocidade Quadrtica para Inteiros mpares


Sejam n, m Z . Se n e m so maiores do que 3 e so mpares, ento:
n 1 m 1 m n . ( ) = ( 1) 2 2 .( ) . n m

Demonstrao
n m Caso MDC (m, n ) > 1 ento ( ) = ( ) = 0 e a soluo trivial. Assumamos ento que m n

MDC (m, n ) = 1 , e sejam m = p1 . p 2 ... p r e n = q1 .q 2 ...q s as decomposies em primos de m e n.


Notemos que, pelo teorema 1.9.1, o resultado verdadeiro para r + s = 2. Alm disso, caso r + s = 3, podemos assumir, sem perda de generalidade, que m composto e n primo. Isto , p p m m = p1 .p 2 e n = q1 , e pela definio de Smbolo de Jacobi temos que ( ) = ( 1 ).( 2 ) . Assim, n n n
p ( 1 ) = ( 1) n n 1 p1 1 . 2 2 p n .( ) e ( 2 ) = ( 1) p1 n n 1 p2 1 . 2 2

.(

n ) , e pelo item 2 das propriedades 1.9.2 p2

temos que:
( p1 p 2 m ).( ) = ( ) = ( 1) n n n

n 1 p1 1 . 2 2

.( 1)

n 1 p2 1 . 2 2

n .( ) , isto , m

p p m ( 1 ).( 2 ) = ( ) = ( 1) n n n

n 1 p1 1+ p2 1 . 2 2

n .( ) . m

Agora, que m

m 1 p1 p 2 1 (2k1 + 1)(2k 2 + 1) 1 para algum par (k1 , k 2 ) de inteiros, dado = = 2 2 2 mpar. Logo 4k1k 2 + 2(k1 + k 2 ) = 2 k1 k 2 + k1 + k 2 . 2 Por sua vez,

p 1 + p 1 2k + 2k m 1 p1 1 + p 2 1 1 2 2 = 1 = k1 + k 2 . Portanto, (mod 2) , isto , eles so 2 2 2 2

57

simultaneamente

pares = ( 1)

ou

simultaneamente

mpares,

donde

podemos

concluir

que

( 1)

n 1 p1 1+ p2 1 . 2 2

n 1 m 1 . 2 2

, o que prova o teorema para r + s = 3.

Finalmente, podemos aplicar uma induo sobre r + s 3 . No entanto, para provar o teorema para r + s + 1, o processo exatamente o mesmo para r + s = 3. Portanto, o teorema vlido para quaisquer n e m mpares.
n 1 2 Corolrio 1.9.2: Se n 3 um inteiro mpar, ento ( ) = ( 1) 8 . n
2

1, if n = 1 ou n = 7 em Z 8 2 Em outras palavras, ( ) = . n 1, if n = 3 ou n = 5 em Z 8
Demonstrao
n 1 1 2 . Pelo teorema 1.9.2 temos que ( ) = ( 1) 2 2 . No entanto, caso um nmero seja par n

seu quadrado tambm ser par, e o mesmo vale para nmeros mpares. Logo, temos que
n 1 1 n 1 2 . ( ) = ( 1) 2 2 = ( 1) 2 n
n 1 2 ( ) = ( 1) 8 . n 2 2 1 . 2

= ( 1)

( n 1)2
8

. Finalmente, em Z 2 , temos n 1 = n 2 1 . Logo,

58

Captulo 2. Teoria dos Anis e Corpos.


Neste captulo falaremos de duas estruturas algbricas: os anis e os corpos. Em particular, estudaremos os anis polinomiais, os quais sero necessrios para a demonstrao, no captulo 9, do algoritmo AKS.

2.1. Anis e Corpos


Definio 2.1.1: Seja A um conjunto. Dizemos que A, munido de uma adio e uma
multiplicao (denota-se ( A,,) ), um anel se as seguintes propriedades forem atendidas: 1.

( A, ) um grupo a;

2. Associativa da multiplicao: (a b ) c = a (b c ), a, b A ; 3. Distributiva 1: c (a b ) = c a c b, a, b, c A ; 4. Distributiva 2: (a b ) c = a c b c, a, b, c A .

Definio 2.1.2: Seja ( A,,) um anel. Dizemos que:


1.

( A,,)

um anel comutativo se a multiplicao comutativa, isto ,

a b = b a, a , b A ;

2. 3.

( A,,) um anel com unidade se 1A A : a 1A = 1 A a = a, a A ;

( A,,)

um anel de integridade ou domnio se for um anel comutativo, com

unidade e se para quaisquer a, b A tal que a b = 0 A tivermos que

a = 0 A ou b = 0 A .
Por convenincia, toda vez que nos referirmos a anel estaremos falando de anel comutativo com unidade, pois, neste trabalho, usaremos apenas anis que atendam essas propriedades. Em dados momentos tambm usaremos anis de integridade. Facilmente verifica-se a proposio abaixo.

59

Proposio 2.1.1: Seja m 2 inteiro, ento (Z m ,+, ) um anel.

Notemos que, segundo a definio 2.1.2, Z m um anel de integridade s se no admitir divisores de zero. Como vimos na seo 1.4, isso ocorrer apenas se m for primo.

Definio 2.1.3: Seja C um anel. Dizemos que C um corpo se C admitir inverso multiplicativo
para todo elemento no nulo, isto , para c C : c 0 C temos que existe c 1 C tal que
c c 1 = 1C . Em outras palavras, C um corpo se as seguintes propriedades forem atendidas:

1. 2.

(C , ) um grupo abeliano (aditivo); (C ,) um grupo abeliano (multiplicativo);

3. Distributiva: c (a b ) = c a c b, a, b, c C A partir daqui, toda vez que nos referirmos a um anel ou corpo genrico, usaremos + para

denotar a soma e

para a multiplicao, e nos referiremos adio de um elemento a pelo

oposto do elemento b apenas por a b, para tornar a notao mais inteligvel. conveniente tambm estabelecer um padro para diferenciarmos os elementos neutros e os inversos aditivos dos multiplicativos.

Definio 2.1.4: Seja ( A,+,) um anel. Chamaremos de zero ou elemento nulo o elemento neutro
aditivo e de unidade o elemento neutro multiplicativo. Alm disso, chamaremos de oposto o simtrico aditivo, enquanto o multiplicativo ns chamaremos de inverso. Existem exemplos muito evidentes de anis e corpos, como o anel dos inteiros, e os corpos dos Racionais, Reais e Complexos. Estes so os conjuntos mais conhecidos e que atendem estas estruturas. Alm disso, o conjunto dos inteiros , na verdade, um anel de integridade, no entanto, no corpo, pois s admite inverso para 1 e 1. Citamos tambm outro exemplo de anel: o conjunto dos inteiros mdulo m. Demonstraremos agora um novo exemplo de corpo. 60

Proposio 2.1.2: Seja m 2 inteiro. Temos que (Z m ,+, ) um corpo se e s se m for um


nmero primo.

Demonstrao
Pela proposio 2.1.1 (Z m ,+, ) um anel ento basta demonstrar que (Z m ,+, ) admite inverso para todo elemento no nulo. No entanto, pela proposio 1.4.4, todos os elementos a inversveis de Z m devem atender MDC (m, a ) = 1 e isso acontecera se e s se m for primo. Portanto, (Z m ,+, ) um corpo se e s se m for um nmero primo.

Uma observao: no caso de Z m , todo elemento no nulo ou divisor de zero ou inversvel, isto , ou Z m no anel de integridade ou corpo. No entanto, isso no sempre verdade. Notemos, por exemplo, que o anel dos inteiros um anel de integridade, no entanto no corpo. Ora, como para grupos definimos os subgrupos, para anis e corpos podemos fazer definies semelhantes.

Definio 2.1.5: Seja A um anel. Dizemos que um subconjunto S de A um subanel de A se S for


um subgrupo aditivo de A e a multiplicao for fechada em S, isto , para a , b S temos

a b S .
Notemos que um subanel um anel. No entanto, assumimos acima que toda vez que nos referirmos a anel estaremos falando de anel comutativo com unidade. Isso no vale para subanis. No caso destes, eles sero ao menos anis comutativos, no necessariamente com unidade.

Definio 2.1.6: Seja K um corpo. Dizemos que um subconjunto F de K um subcorpo de K se F


for um subgrupo aditivo e um subgrupo multiplicativo de K. Abaixo temos um caso particular de subanel que merece grande ateno.

61

Definio 2.1.7: Seja A um anel e I um subanel de A. Se para a A e i A tivermos que

a i I , ento I chamado de ideal de A.


Chamemos de ideais triviais de um anel A os ideais I = {0 A } e I = A . Pela definio que estabelecemos para ideal, v-se que estes a atendem perfeitamente. Tambm fcil ver que, se

a A e I = a A = {a x | x A}, ento I um ideal. Veremos, a seguir que, no caso de corpos,


s existem ideais triviais.

Proposio 2.1.3: Se K um corpo e I um ideal de K, ento I = {0 K } ou I = K . Demonstrao


Suponha que I {0 K } . Neste caso, i I tal que i i 1 = 1K , i 1 K . Mas, pela definio de ideal, i i 1 I 1K I . Logo, para a K temos que a 1K I , isto , a I , isto , I = K . Portanto, I = {0 K } ou I = K .

Definio 2.1.8: Seja A um anel e I um ideal de A. I chamado de ideal principal de A se para


algum a A , termos que I = a A . Se todo ideal de A for principal, diz-se que A um anel

principal.
Um bom exemplo de anel principal o conjunto dos inteiros. fcil verificar que, no s todo ideal principal nos inteiros, como tambm como todo subanel um ideal.

Definio 2.1.9: Seja A um anel e I um ideal de A. I chamado de ideal maximal de A se:


1. I A 2. Se J um ideal de A tal que I J A , ento J = I ou J = A .

Notemos que, devido proposio 2.1.2, se K um corpo e I um ideal maximal, ento I s pode ser {0 K }. Iremos fazer agora uma definio anloga definio 1.5.4.

62

Definio 2.1.10: Sejam A um anel, I um ideal de A e a, b A . Diz-se que a b(mod I ) (l-se a


cngruo a b mdulo I) se a b I . Pelo lema 1.5.2, (mod I ) uma relao de equivalncia. Por convenincia, passaremos a denotar o conjunto quociente A A apenas por . Alm disso, analogamente ao que foi (mod I ) I
A por a + b = a + b e a b = a b , e I

feito nas sees 1.5 e 1.6, definimos as operaes + e . em fcil notar que

A um anel. Em vista disso, demonstraremos mais um resultado relevante. I A corpo. I

Proposio 2.1.4: Seja A um anel e I um ideal. I ideal maximal se e s se

Demonstrao
Suponhamos que
A seja corpo. Ento, provemos que I ideal maximal. I A corpo. Mas, para todo i I , temos que i = 0 A . I

1. Temos que 1 A 0 A , pois

Logo, temos que 1 A I , isto A I ; 2. Seja J um ideal de A tal que I J A . Suponha que I J Mas, ento temos que j J tal que j I ; logo j 0 A . Como temos que
A corpo, I

j inversvel, isto , a

A I

tal que

j.a = 1 A . Logo,

j.a 1A = i I . Como I J , temos que j.a 1A = i J . Mas J ideal, o que


significa que
j.a J . Logo, 1 A J . Como, para a' A temos que

1A.a' = a' J ento J = A .

63

Agora, suponhamos que I ideal maximal. Basta provar que a inversvel. Atentemos ento para o ideal J = I + a. A , onde a no nulo em I J A , mas I J , pois a I . Como I maximal, J = A = I + a. A .

A no nulo I A . Temos que I

Ora, 1 A A 1 A = i + a. y , onde i I com y A . Logo, a. y 1 A = i , o que significa que A corpo. a . y = 1 A . Logo, a inversvel e, portanto, I

2.2. Anis Polinomiais


Nesta seo formalizaremos a idia de polinmio, e faremos uma srie de analogias entre anis polinomiais e o anel dos nmeros inteiros. De fato, muitos resultados originalmente dos inteiros podem ser usados, com suas devidas adaptaes, para certos anis de polinmios. Ento, para comear, precisamos definir estes novos elementos algbricos.

Definio 2.2.1: Seja A um anel. Um polinmio f na varivel x com coeficientes em A (ou


simplesmente

polinmio

de

em

A),

uma

soma

formal

finita:

f = a n x n + a n 1 x n 1 + ... + a 2 x 2 + a1 x 1 + a 0 , onde n Z : n > 0 e, para i Z ,0 i n temos

ai A . Alm disso, chamamos aj de coeficiente em grau j, e denotamos por A[x] o conjunto de todos os polinmios de x em A. Iremos nos referir a um polinmio fazendo referncia, ou no, sua varivel, isto , poderemos usar tanto f como f(x). Na prtica no muda muito, mas para no haver nenhuma confuso posteriormente bom destacar este detalhe.

Definio 2.2.2: Sejam A um anel e f um polinmio de x em A, e seja j o maior ndice tal que o
coeficiente na posio j no seja nulo. Ento, dizemos que j o grau de f, e chamamos a j , coeficiente em grau j, de coeficiente dominante. Denotaremos o grau de f por ( f ) e o coeficiente dominante por ( f ) .

64

Notemos que, por enquanto, a varivel x no passa de um smbolo e o grau de cada fator nada mais do que um elemento determinante da ordem dos coeficientes. Alm disso, a definio de grau no abrange o polinmio nulo e, portanto, no faz sentido falar de grau quando lidamos com ele. Alm disso, caso um polinmio tenha grau zero, isso significa que ele constante. importante definir, tambm, a interao entre os polinmios. Primeiramente, a mais simples e intuitiva de todas a igualdade. Dois polinmios sero iguais se, os coeficientes correspondentes forem iguais. No entanto, no faz sentido falar se um polinmio maior ou menor que o outro. Em vrios momentos iremos expressar dois polinmios como se eles tivessem o mesmo grau. Isso pode ser feito, pois, caso o grau de um seja menor do que o do outro basta acrescentar fatores com coeficientes nulos at que ambos tenham um fator com o grau mximo. Com isso, podemos definir facilmente a soma de polinmios.

Definio 2.2.3: Sejam A um anel e f e g polinmios de x em A. Definimos a soma de f(x) e g(x)


como:

(f

+ g )( x ) = ( a n + bn ) x n + ( a n 1 + bn 1 ) x n 1 + ... + ( a1 + b1 ) x + ( a 0 + b0 ) , onde

aj

coeficiente em grau j de f e b j em grau j de g, e n = max{( f ), ( g )}.

A definio dada para a soma atende plenamente o que geralmente efetuamos na soma de polinmios. Tambm no difcil notar que, caso ambos os polinmios tenham o mesmo grau, pode ser que sua soma tenha grau menor, j que os coeficientes em grau maiores podem se anular. Logo, podemos dizer que ( f + g ) max{( f ), ( g )} . A definio de multiplicao j no to simples. Para definirmos da maneira mais conveniente, tomemos os polinmios: f ( x) = 2 x 2 + 5 x + 1 e g ( x) = 6 x 3 + 2 x 2 + 3 x + 5 Multiplicando-os, temos:

f ( x) g ( x ) = 2 x 2 + 5 x + 1 6 x 3 + 2 x 2 + 3x + 5 = = (6 2)x + (6 5 + 2 2 )x + (6 1 + 2 5 + 3 2 )x 3 +
5 4

)(

(2 1 + 3 5 + 5 2)x 2 + (3 1 + 5 5)x + 5 1
Notemos que os fatores foram agrupados de acordo com o grau do fator resultante. Por exemplo, o fator de grau quatro do produto 6 x 3 5 x 1 + 2 x 2 2 x 2 , donde podemos dizer que o
65

coeficiente em grau e do produto de dois polinmios f ( x ) = a k .x k e g ( x ) = bk .x k ser


k =0 k =0

ck =

a
i + j =e

b j , isto , a soma dos produtos dos coeficientes de f e de g tal que a soma de seus

graus seja e.

Definio 2.2.4: Sejam A um anel e f e g polinmios de x em A Definimos o produto de f por g


como ( f .g )( x ) = c k .x k , onde c k =
k =0 n+m

a
i+ j =k

b j , ai o coeficiente em grau i de f e b j em grau j

de g. Alm disso, n o grau de f e m o grau de g. Notemos que, se cl = 0 se l > n + m e c n + m = a n bm . Desta definio decorre a propriedade distributiva entre os polinmios, o que a torna muito conveniente. Quanto ao grau de f .g , se

f .g 0 A , apesar de no ser to natural, vale que ( f .g ) ( f ) + (g ) . Isso porque, caso A no


seja anel de integridade, o produto de dois elementos no nulos pode ser nulo. Portanto, os coeficientes dominantes a n , bm , neste caso, tambm podem acabar se anulando, diminuindo o grau do resultado. Com estas definies e observaes, podemos mostrar algumas propriedades de comportamento, referente ao grau da soma e do produto de polinmios:

Definio 2.2.3: Sejam A um anel e f e g polinmios de x em A. Definimos a soma de f(x) e g(x)


como:

(f

+ g )( x ) = ( a n + bn ) x n + ( a n 1 + bn 1 ) x n 1 + ... + ( a1 + b1 ) x + ( a 0 + b0 ) , onde

aj

coeficiente em grau j de f e b j em grau j de g, e n = max{( f ), ( g )}.

A definio dada para a soma atende plenamente o que geralmente efetuamos na soma de polinmios, em expresses de clculo e afins. Tambm no difcil notar que, caso ambos os polinmios tenham o mesmo grau, pode ser que a soma tenha grau menor, j que os coeficientes em grau maiores podem se anular. Logo, podemos dizer que ( f + g ) max{( f ), ( g )} . A definio de multiplicao j no to simples. Tomemos f e g polinmios em um anel A tal que:
f ( x) = a n x n + a n 1 x n 1 + ... + a1 x + a 0 e g ( x ) = bm x m + bm 1 x m 1 + ... + b1 x + b0

66

Notemos que naturalmente poderamos dizer que o produto destes polinmios :

( f .g )( x) = (ai b j x i + j )
i =0

j =0

E isso no est errado. O problema que tambm no est na forma em que foi definido polinmio. Para que isso seja resolvido, devemos pensar um pouco em como esses coeficientes interagem. Por exemplo, suponhamos que estamos multiplicando um fator de f por outro de g, no meio do processo, onde o grau do fator de f i e o de g j. Ora. O resultado ser um fator de grau i + j. Mas i + j um nmero inteiro, ento chamemos este nmero de k. Podemos multiplicar outros fatores que resultem na mesma soma, isto , os que tiverem fator resultante de grau k. Evidentemente, somaremos todos esses coeficientes e obteremos o coeficiente em grau k do polinmio ( f .g )( x) . Portanto, podemos dizer que este coeficiente

a
i + j =k

b j . Teremos, ento, k

variando entre zero, pois o valor mnimo para i e j zero, e n + m, onde n e m so os graus de f e g. Dessa forma, podemos redefinir a multiplicao de polinmios da seguinte maneira:

Definio 2.2.4: Sejam A um anel e f e g polinmios de x em A Definimos o produto de f por g


como ( f .g )( x ) = c k .x k , onde c k =
k =0 n+m

a
i + j =k

b j , ai o coeficiente em grau i de f e b j em grau j

de g. Alm disso, n o grau de f e m o grau de g. Essa definio muito satisfatria, pois atende a forma definida para polinmio e, alm disso, naturalmente comutativa, pois ck calculado por um anel comutativo. Quanto ao grau do fator resultante, apesar de no ser to notvel, temos que ( f .g ) ( f ) + ( g ) . Isso porque, caso A no seja anel de integridade, o produto de dois elementos no nulos pode ser nulo. Portanto, os coeficientes maiores, neste caso, tambm podem acabar se anulando, diminuindo o grau do resultado. Com estas definies e observaes, podemos montar algumas propriedades de comportamento, referente ao grau da soma e do produto de polinmios:

67

Propriedades 2.2.1: Seja A anel e seja f , g A[x ] no nulos. Ento, temos:


1. Se f > g ento ( f + g ) = max{f , g }; 2. Se f = g e f + g 0 A , ento ( f + g ) max{f , g}; 3. Se f , g A e ao menos um dos coeficientes dominantes no divisor de zero, ento temos que f g 0 A e ( f .g ) = ( f ) + ( g ) ; 4. Se f , g A tem os coeficientes dominantes divisores de zero e f g 0 A , ento

( f .g ) ( f ) + ( g ) ;
5. Se ( f ) = 0 , ento f constante;

Teorema 2.2.1: Se A um anel ento (A[x], +, .) um anel. Demonstrao:


As propriedades comutativas e associativas decorrem do fato de A ser um anel (comutativo). O elemento neutro z ( x) = 0 A , e a unidade u ( x) = 1 A . fcil ver que o oposto de um elemento f o polinmio que tem cada coeficiente oposto ao correspondente em f. Por fim, basta provar a distributiva, mas ela decorre da definio de produto de polinmios.

Proposio 2.2.1: A um anel de Integridade se e s se A[x] de integridade; Demonstrao Decorre imediatamente da propriedade 2.2.1, item 3.
Ora, apesar de provarmos que esta nova estrutura um anel, ela nunca ser um corpo. Este resultado ser demonstrado no teorema a seguir.

68

Teorema 2.2.2: Se A um anel e f A[x] inversvel, ento ( f ) = 0 , isto , f constante Demonstrao


Seja f
1

inverso de a em A[x]. Logo, temos que f . f

= 1 A , o polinmio unitrio. Mas

(1A ) = 0 e, por hiptese, a inversvel, o que significa que ele no divisor de zero. Pelas
propriedades 2.2.1 temos, ento, que f . f que ( f ) = 0 e f

) = ( f ) + ( f ) , mas (a.a ) = 0 , o que implica


1 1

( )= 0 .
1

O teorema acima mostra que todo elemento inversvel de um anel polinomial constante. Mais do que isso, ele mostra que os elementos inversveis em A[x] so os elementos inversveis de A, o que suficiente para mostrar que um anel polinomial nunca ser corpo. Agora, veremos quando possvel dividir polinmios. Na realidade, para todo este trabalho sequer usaremos a teoria de anis e corpos, a no ser para o captulo 9, onde discutiremos e demonstraremos o algoritmo AKS.

Teorema 2.2.3: Diviso de Polinmios


Sejam A anel e f , g A[x ] . Se (g ) for inversvel em A, ento existem q, r A[x] unicamente determinados tais que f = q.g + r , onde r = 0 A ou r < g .

Demonstrao
Notemos que, se f for nulo, ento automaticamente o teorema vlido. Alm disso, caso
f < g , ento temos que f = 0 A.g + f , e novamente a validade est verificada. Suponhamos,

ento, que f g . Neste caso, se f = 0 g = 0 e o teorema vlido. Suponhamos ento, por induo que, se k 0 o teorema vale para polinmios com grau , 0 k , e provemos para

= k + 1.
Consideremos h = f ( f ). ( g ) .x f g .g ( x ) , f um polinmio de grau k + 1. Se h = 0 A , ento f = ( f ). ( g )1 .x f g .g ( x ) + 0 A . Se h 0 A , ento segue, da prpria definio de h, que
1 h < f = k + 1 . Logo, por hiptese de induo, h = g .q '+ r ' f ( f ). ( g ) .x f g .g = gq '+ r ' , 1

69

para

certos

q ' , r ' A[x ] ,


1

tal

que

r ' < g

se

r' 0 A .

Portanto,

f = f ( f ). ( g ) .x f g .g ( x ) + q ' .g + r , isto , f = g .q + r , o que prova a existncia da

diviso. Provemos agora a unicidade da diviso. Para tanto, suponhamos que f = g.q1 + r1 e

f = g.q 2 + r2 , onde r1 < g se r1 0 A e r2 < g se r2 0 A . Com isso, temos que

g (q1 q 2 ) + r1 r2 = f f = 0 A . Sabemos que g > r1 , r2 . Logo, levando em conta que o


coeficiente dominante de g inversvel, se q1 q 2 0 A , teramos que g (q1 q 2 ) + r1 r2 > 0 A , o que um absurdo. Logo, q1 = q 2 e, conseqentemente, r1 = r2 . Podemos facilmente encontrar um mtodo para dividir um polinmio, a partir da demonstrao acima. O segredo est na expresso h = f ( f ). ( g ) .x f g .g ( x ) . Para dividir um polinmio qualquer por g, o primeiro passo seria determinar o primeiro fator do quociente, no caso ( f ). ( g )1 .x f g . Com isso, obteramos o h, com grau menor do que f. Caso h seja nulo ou tenha grau menor do que g, ele simplesmente o resto e a diviso est terminada. Do contrrio, basta repetir o processo, dessa vez com a expresso h' = h (h ). ( g )1 .x f g .g ( x ) . Enfim, repetindo consecutivamente esses passos, como h um nmero finito de termos em f, em algum momento obteramos um h com grau menor do que g, e o processo se encerraria. Notemos que essencial que o coeficiente dominante de g seja inversvel para que este processo possa ser aplicado sempre. Assim, se A for um corpo, isso poder ser feito para qualquer polinmio.
1

Definio 2.2.5: Seja A um anel e f , g A[x ] . Se q A[x] tal que f = g .q , dizemos que f divisvel por g, ou que g divide f. Definio 2.2.6: (Razes de um polinmio)
Seja A um anel e f A[x] . Se A tal que o polinmio g = x divide f, ento dizemos que uma raiz de f. Geralmente, uma raiz de polinmio em A[x] definida como um A tal que f ( ) = 0 . Isto , o valor de f em , que o valor do polinmio quando trocamos a incgnita x por um 70

elemento de A. Alm disso, vale a equivalncia: ( x ) | f se e s se f ( ) = 0 A , que conhecida como teorema de DAlembert

Definio 2.2.7: Seja A um anel e f A[x] . Se o coeficiente dominante de f for unitrio, ento
dizemos que f um polinmio mnico. Esta definio ser importante para os prximos resultados, principalmente quando falarmos de mximo divisor comum.

Teorema 2.2.4: Se K um corpo, ento K [x ] um anel principal2. Demonstrao


Seja I um ideal de K [x ] . Caso I = {0 k } , ento claramente I ideal principal. Suponhamos, ento, que I {0 k } . Neste caso, tomemos f I tal que f tenha o menor grau possvel. Com isso, seja g I . Como K corpo, pelo teorema 2.2.3 (Algoritmo no Diviso), temos que q, r K [x ] tal que g = q. f + r , onde r nulo ou r < f . No entanto, como I ideal,
q. f I e, j que g tambm um elemento de I, isso implica que r I . Mas, f o polinmio

com menor grau possvel em I, donde conclumos que r nulo. Logo, todo elemento de I da forma q. f , q K [x ] , isto , todo ideal de K [x ] principal. Logo, K [x ] principal. Notemos que, sendo g = q. f , onde g , q, f K [x ] e K corpo, podemos dizer que
g = (q.( f )). ( f ) . f

) e (( f ) . f ) mnico. Portanto, qualquer ideal neste anel pode ser


1

formado por mltiplos de um mnico. Fora isso, a soma de dois ideais tambm ser um ideal, e principal, j que K [x] principal. Logo, a soma de vrios ideais em um corpo tambm pode ser expressa como o mltiplo de algum f. Esta noo essencial para a definio de mximo divisor comum.
2

Confira definio 2.1.8, onde se estabelece o que um anel principal.

71

Teorema 2.2.5: Mximo Divisor Comum


Seja K um corpo e sejam f 1 , f 2 ,..., f n K [x] . Consideremos o ideal

I = f .K [x] = f 1 .K [x ] + f 2 .K [x ] + ... + f n .K [x] . Ento 1. r1 , r2 ,..., rn K [x ] tal que f = r1 f 1 + r2 f 2 + ... + rn f n ; 2. f | fi , 1 i n ;

3. Se para d K [x] com d | f 1 , f 2 ,..., f n , ento d | f ;

Demonstrao
1. Esta afirmao claramente verdadeira, apenas pelo fato de que f f .K [x ] , e f .K [x ] = f 1 .K [x ] + f 2 .K [x] + ... + f n .K [x ] ; 2. Como f i K [x] e f i K [x ]. f , temos que f | f i ,1 i n ; 3. Seja d K [x ] tal que d | f i , 1 i n . Com isso, temos hi K [x] tal que d .hi = f i d .(hi .ri ) = f i ri ,1 i n . Logo, podemos concluir que d | f i.ri = f , isto d | f .
i =1 n

Definio 2.2.8 (Mximo Divisor Comum) Seja K um corpo e sejam f 1 , f 2 ,..., f n K [x] . O polinmio mnico f K [x ] tal que
f .K [x ] = f 1 .K [x] + f 2 .K [x ] + ... + f n .K [x ] chamado de mximo divisor comum de f 1 , f 2 ,..., f n . A prxima analogia que faremos de K [x ] com Z. Quando falamos de anis polinomiais, tambm podemos nos referir a elementos que podem ser expressos como o produto de outros, da mesma forma que, em Z, podemos decompor os inteiros em primos. A definio logo abaixo formalizar esse fato.

72

Definio 2.2.9: (Polinmio irredutvel)


Sejam K um corpo e f K [x] tal que f 1 . Dizemos que f irredutvel em K [x] se, para g , h K [x ] tal que f = g .h tivermos que g = 0 ou h = 0 . Isto , quando f no puder ser expresso como o produto de dois polinmios com grau maior ou igual a um. Notemos que todo polinmio de grau um irredutvel. Alis, notemos que estamos trabalhando com K corpo. Isso ser importante daqui por diante, para garantir a dinmica dos resultados. Finalmente, as ltimas concluses imediatas que podemos tomar so que, se um polinmio grua 2 ou 3 redutvel, ento este tem um fator linear, isto , de grau um e, portanto, admite uma raiz no corpo. Caso o polinmio for redutvel e tenha grau maior ou igual a quatro, j no podemos dizer que ele admita raiz no corpo. Agora, em posse de uma definio anloga a primos para polinmios, podemos fazer um teorema anlogo ao Teorema Fundamental da Aritmtica. Estamos falando do Teorema da Fatorao nica de Polinmios.

Teorema 2.2.6: (Fatorao nica de Polinmios)


Se K um corpo e f K [x] tal que f 1 , ento p1 , p 2 ,..., p n K [x ] polinmios
mnicos irredutveis e c K constante tal que f = c. p1 (1) .... p n (n ) . Alm disso, essa fatorao

nica, a menos da ordem dos fatores.

Demonstrao
Demonstremos a existncia da fatorao. Caso f seja irredutvel, no h o que demonstrar. Caso seja redutvel, podemos express-lo como o produto de dois polinmios com grau maior ou igual a um, isto , f = f 1 f 2 . Mas, caso algum f i seja redutvel, podemos express-lo como o produto de outros dois polinmios. Usando sucessivamente este argumento, obrigatoriamente encontraremos o produto de uma srie de polinmios irredutveis, pois h um nmero finito de graus menores do que f . Portanto, existe uma fatorao. Demonstraremos agora que ela nica. 73

Para tanto, suponhamos que f = 1 . Neste caso, f = c. p , onde p um polinmio mnico irredutvel e c K o coeficiente dominante de f. Portanto, o teorema vlido neste caso. Suponhamos, ento, que seja vlido para 1 f k , k 1 e provemos que a unicidade para polinmio de grau k + 1. Assim, seja
f = c. p1 (1) .... p m (m ) tal que f = k + 1 . Mas, ento, f = p1 g para algum

g K [x ] com grau menor ou igual a k. Logo, por hiptese de induo, temos que g tem uma
nica fatorao. Como
f = g . p j , pelo teorema 2.2.3 temos que este p j est definido

unicamente, o que implica que a fatorao de f tambm nica. Como conseqncia do teorema 2.2.6, eis um resultado bem conhecido sobre polinmios.

Corolrio 2.2.1: Se K um corpo e f K [x] tal que f 1 , ento f no pode ter mais do que
f razes.

Demonstrao
Se f = 1 , no h o que demonstrar. Se f > 1 e se K raiz de f, ento

f = ( x ) g para algum g K [x] . Como 1 g f , por induo sobre o grau de f segue que
g tem, no mximo g razes e, portanto, f tem, no mximo g + 1 = f .

Notemos que, em Z 12 [ x] , o polinmio x 2 1 tem quatro razes: 1 , 5,7 e 11. Isso ocorre porque Z 12 no corpo. Abaixo est demonstrado mais um resultado que ser usado diretamente na demonstrao do algoritmo AKS.

74

Lema 2.2.1: Se K um corpo, ento: p K [x] irredutvel se, e somente se, o ideal P = p.K [x ]
maximal.

Demonstrao
Claramente, p.K [x] K [x] , porque p 1 . Seja ento J ideal de K [x ] tal que

P J K [x] . Pelo teorema 2.2.4, K [x ] anel principal, logo, J = q.K [x ] , onde q K [x ] .


Como p P e P J , ento p J . Logo, q | p , mas p irredutvel. Logo, ou q = 0 , ou
q = c p para algum c K * . Se q = 0 ento J = K [x] . Se q = c p , ento J P e, portanto

P = J . Portanto, P maximal. Reciprocamente, se P maximal e se p = g f , ento P g K [x] K [x] . Como P maximal, g K [x] = K [x] ou P = g K [x ]. Se g K [x] = K [x] ento g = 0 . Se

P = g K [x ] ,

ento g = h p , para algum h K [x ] , donde p = (h p ) f , isto , 1k = f h e, portanto f = 0 . Logo, p irredutvel.

75

Teorema 2.2.7: Seja K um corpo. Ento p K [x] um polinmio irredutvel se, e s se, o anel
quociente
K [x ] um corpo, onde P = p.K [x ]. P

Demonstrao
Pelo lema 2.2.1, P ideal maximal. Logo, pela proposio 2.1.4,
K [x ] corpo. P

76

Captulo 3. Sucesses de Lucas.


Neste captulo analisaremos as propriedades das sucesses de Lucas as quais, como veremos no captulo 6, formam a base dos testes de primalidade para nmeros N que tenham os fatores primos de N + 1 facilmente determinveis.

3.1. Exemplos de definio


O caso mais conhecido de Sucesso de Lucas a clebre sucesso de Fibonacci. Geralmente ela apresentada da seguinte maneira:

Definio 3.1.1: (Seqncia de Fibonacci)


Chamamos de Seqncia de Fibonacci a sequncia numrica a 0 , a1 ,..., a n ,... tal que a0 = 0 e a1 = 1 e a n = a n 2 + a n 1 . De fato, esta relao d origem sucesso: 0, 1, 1, 2, 3, 5, 8, 13, 21,... A alegoria mais conhecida desta sucesso exatamente a procriao de coelhos. Supomos que, no ms inicial, temos um casal de coelhos filhotes. Supomos tambm que estes filhotes demoram um ms para atingirem a maturidade e mais um ms para procriarem, dando luz a exatamente um casal de filhotes. Dessa maneira, passado um ms temos um casal; passado dois meses, temos dois: os novos filhotes juntamente com o casal anterior; passado trs meses, o segundo casal atinge a maturidade e o primeiro casal procria novamente, sendo que teremos um total de trs casais (2 casais anteriores mais 1); No quarto ms sero dois casais a procriarem e um a atingir a maturidade somando, assim, cinco casais. Esta lgica recorrer infinitamente, no considerando, claro, o ciclo de vida dos coelhos, o que coincidir exatamente com a sucesso de Fibonacci. Ela tem vrias aplicaes como, por exemplo, um sistema grfico de repeties, usado para criar alguns desenhos computacionais interessantes. Nesta seo, no entanto, no falaremos

77

do carter prtico desta seqncia, mas sim, a generalizaremos. Para tanto, apresentamos uma definio preliminar:

Definio 3.1.2. (Polinmios de Lucas)


Sejam P, Q, D Z * tal que D = P 2 4Q e D 0 . Chamamos X 2 P X + Q de

Polinmio Gerador de Lucas; onde =

P+ D P D so suas razes. , = 2 2

Notemos que, com as condies assumidas, temos:

+ = P = Q D =
Com isso, definiremos agora a generalizao da sequncia de Fibonacci, as Sucesses de Lucas:

Definio 3.1.3. (Sucesses de Lucas)


Tomemos o polinmio de Lucas X 2 P X + Q . Chamamos de Sucesses de Lucas as sequncias numricas U n (P, Q ) =

n n e Vn (P, Q ) = n + n , n IN .

Iremos demonstrar, agora, duas caractersticas das sucesses de Lucas: a primeira que todo nmero destas sucesses inteiro; a segunda que podemos descrev-la genericamente como uma recorrncia.

78

Proposio 3.1.1. Dadas U n = U n (P, Q ) =


Lucas, temos que: 1.

n n e Vn = Vn (P, Q ) = n + n sucesses de

U n e Vn so inteiros, para todo n IN ;

2. U n = P U n1 Q U n 2 e Vn = P Vn1 Q Vn 2 , para todo n 2, n IN .

Demonstrao
Primeiramente, notemos que U 0 = U1 =

0 0 = 0 e V0 = 0 + 0 = 2 ; alm disso,

= 1 e V1 = + = P , onde P um inteiro pela definio 3.1.2. Assim, como Q e P

so inteiros, caso verifiquemos o item 2 tambm justificaremos o item 1. Isso porque, caso o item 2 seja verdadeiro, ento a srie de recorrncias nada mais do que o produto e a subtrao de uma srie de inteiros, o que claramente resulta em um nmero inteiro. De fato, U 2 =

2 2 = ( + ) 0 = P U 1 Q U 0 . Para V2 podemos verificar que

V2 = 2 + 2 = ( + ) ( + ) ( ) 2 = P V1 Q V0 . Dessa forma, provamos que a recorrncia vlida para n = 2 . Suponhamos ento que tambm seja vlida para n 2 e a demonstremos para n + 1 . Ora, U n+1 =

n+1 n+1 n n n n que, por sua vez, igual a = ( + )

( + )

n1 n1 n ( ) = P U n Q U n1 = U n+1 . Portanto, a recorrncia posta para


n

U n vlida. Analisando, ento, Vn , Notemos que: Vn+1 = n+1 + n+1 = ( + ) n + n n + n . Assim, Vn+1 = ( + )( n + n ) ( )( n1 + n1 ) = P Vn Q Vn1 . Com isso, conclumos que a recorrncia tambm vlida para Vn . 79

) (

Atentemos novamente para a definio 3.1.2. Notemos que D precisa apenas ser diferente de zero. Caso ele seja negativo, as razes e sero razes complexas, mas isso no muda o fato de que as sucesses U n e Vn sero compostas por nmeros inteiros, pois em nenhum momento da demonstrao foi exigido que e fossem inteiros ou at mesmo reais. No entanto, apenas levemos em conta que todas as propriedades algbricas utilizadas, tais como comutativa e distributiva, so vlidas tambm no conjunto dos nmeros complexos. O motivo para definirmos D 0 bem claro. Caso assumssemos as sucesses para D = 0 ento U n no estaria bem definida. Veremos agora que, realmente, a seqncia de Fibonacci uma sucesso de Lucas.

Exemplo 3.1.1. (Seqncia de Fibonacci)


Tomando P = 1 e Q = 1 , podemos facilmente verificar que, por meio da sucesso U n , obtemos a sequncia de Fibonacci: 0, 1, 1, 2, 3, 5, 8, 13, ... 6765,... Alm da seqncia de Fibonacci, podemos destacar mais alguns outros exemplos interessantes:

Exemplo 3.1.2. (Seqncia de Fibonacci alternativa)


Tomando P = 1 e Q = 1 , caso utilizemos a sucesso Vn ao invs de U n , obtemos a seguinte seqncia, que podemos chamar de alternativa seqncia de Fibonacci, j que gerada a partir dos mesmos nmeros e segue o mesmo princpio: 2, 1, 3, 4, 7, 11, 18, 29, ... 9349,...

80

Exemplo 3.1.3. (Seqncias de Fermat e de Mersenne)


Tomando P = 3 e Q = 2, podemos obter as chamadas seqncias de Fermat e de Mersenne, j que estes matemticos dedicaram algum estudo a elas. Assim temos, gerada por U n , a sequncia de Mersenne: 0, 1, 3, 7, 15, 31, 63, ..., 2047... E gerada por Vn , a seqncia de Fermat: 2, 3, 5, 9, 17, 33, 65, ..., 2049,... Notemos que U n = 2 n 1 e Vn = 2 n + 1 para todo n IN . De fato, as razes da equao X 2 3 X + 2 so, exatamente, = 2 e = 1 .

Posteriormente, veremos com mais detalhes os nmeros da forma U n = 2 n 1 .

Exemplo 3.1.4. (Seqncias de Pell)


As seqncias de Pell so obtidas assumindo P = 2 e Q = 1, e so elas: A seqncia gerada pela sucesso U n : 0, 1, 2, 5, 12, 29, 70, ..., 13860, ... A seqncia gerada pela sucesso Vn : 2, 2, 6, 14, 34, 82, 198, ..., 16238,...

3.2. Propriedades
Para usarmos as sucesses de Lucas nos resultados deste trabalho precisaremos, de incio, demonstrar diversas propriedades. Sero, ao todo, trinta e uma. Para sistematizar as demonstraes, dividiremos as propriedades em blocos.3

Todas as propriedades foram retiradas a fio de [RIBEMBOIM 2001, p. 40-49] que origem, alis, de todo o princpio terico sobre sucesses de Lucas desta seo.

81

Propriedades 3.2.1. (Relaes Algbricas I)


Sejam U n = U n (P, Q ) e Vn = Vn (P, Q ) sucesses de Lucas. Ento, para m, n IN : 1.

U n = P U n 1 Q U n 2 , n 2,U 0 = 0,U 1 = 1 ; Vn = P Vn1 Q Vn 2 , n 2,V0 = 2,V1 = P U 2 n = U n Vn , ; V2 n = (Vn )2 2Q n U m+ n = U m Vn Q n U m n , :m n; Vm+ n = Vm Vn Q n Vm n U m+ n = U m U n+1 Q U m1U n , m 1 ; 2Vm + n = Vm Vn + D U mU n D U n = 2 Vn +1 P Vn , ; Vn = 2U n +1 P U n (U n )2 = U n 1 U n +1 + Q n 1 , n 1 . (Vn )2 = D (U n )2 + 4Q n

2.

3.

4.

5.

6.

Demonstrao
1. 2. Vide proposio 3.1.1;

n n (i): U n Vn =
2 2

n 2n 2n +n =

= U 2n ;

(ii): (Vn ) 2Q n = ( n + n ) 2 n n = 2 n + 2 n = V2 n 3.

m m n m n mn + n n n U m Vn Q n U m n =

m+ n + m n n m m + n =

m n n m

m + n m+ n =

= U m+ n

n Analogamente podemos provar que Vm + n = Vm Vn Q Vm n ;

4.

m m U m U n +1 Q U m 1U n =

n+1 n +1 m 1 m 1 n n Q

=
82

m m n +1 n +1 m 1 m 1 n n ( ) = = ( )2 ( )2 m + n +1 n +1 m m n +1 m + n +1 m+n n +1 m + m n+1 + m + n = = ( )2

)(

)(

m+ n +1 + m+ n +1 ( m + n + m+ n ) ( m + n m+ n )( ) ( m+ n m+ n ) = = = U m+ n ( ) ( )2 ( )2
De maneira semelhante temos que Vm Vn + DU mU n igual a:

( (

m m n n 2 + m n + n ( ) = m m n n m m n n + + = m

)( )(

) (

)(

2 m + n + m + n = 2Vm + n ; 5. ( i ): 2 Vn +1 P Vn = 2( n +1 + n +1 ) ( + )( n + n ) =

= n +1 + n +1 n n = ( ) n n = QU n

n +1 n +1 n n ( + ) ( ii ): 2U n +1 P U n = 2 = n +1 n+1 n +1 n + n n +1 n +1 + n n n +1 = = 2

n + n = Vn ;
6.

n 1 n 1 n +1 n +1 n 1 ( i ): U n 1 U n +1 + Q n 1 = + ( ) =

2 n n 1 n +1 n +1 n 1 + 2 n + ( 2 2 + 2 )( )n 1 = ( )2 2 n + 2 n + 2( )n 2 = (U n ) . 2 ( )
Para a segunda parte, no caso (Vn ) = D (U n ) + 4Q n , notemos que (Vn ) = V2 n + 2Q n .
2 2 2

Comparando esta igualdade com a que queremos demonstrar, conclumos que basta provar que D (U n ) = V2 n 2Q n . Mas, V2 n 2Q n = n n podemos concluir que D (U n ) = V2 n 2Q n . 83
2 2

e n n = ( )U n = DU n . Logo,

Quantos as prximas propriedades, a menos da stima, todas associam algum carter das sucesses de Lucas soma de uma seqncia finita.Para isso, lembraremos algumas propriedades bsicas de combinaes numricas: para n, p IN valem:

n! p C n = p!(n p )! , se p n, 1. ; C p = 0, se p > n n 2. C np = C np1 + C np1 para n, p 1 ; 1 3. se n primo, ento n divide C np para 1 p n 1 ;

Propriedades 3.2.2. (Relaes Algbricas II)


Sejam U n = U n (P, Q ) e Vn = Vn (P, Q ) sucesses de Lucas. Ento, para m, n, q IN : 7. U mVn U nVm = 2Q nU m n , m n ; U mVn + U nVm = 2U m + n
1 2 n 1U n = C n+ 2i P n (1+ 2i ) D i i =0 ; n 1 2i n 2i Di 2 Vn = C n P i =0

8.

9.

Se m 1 ento: Caso k seja mpar:


i (U )k D k 12 = 1( 1) Cki Q im U m(k 2i ) m 0i k 2 , k i im (Vm ) = C k Q Vm (k 2i ) 0 i k 1 2

Caso k seja par:


i (U )k D k 2 = k ( 1) C ki Q im Vm(k 2i ) m 0i 2 ; k i (Vm ) = C k Q im Vm (k 2i ) 0 i k 2

84

10.

U n = Q iVn (1+ 2i ) 0i < ( n 1) 2 ; n i P = C n Q iV n 2 i 0 i ( n ) 2

11.

Se q mpar e m positivo, ento: U nq = D


q 1

(U n ) +

1 i q 1

C
2

i 1 q i 1

Q in D

( q 2 i 1)

(U n )

q 2i

Demonstrao
7. Temos: U mVn U nVm = U m+ n + Q n U m n U nVm =
m+n m +n = m n mn + ( )n m n n m n n m +m

)(

) =
= Q nU m n

( )n

m n

mn

2 m n 2 m n = ( )n

De forma anloga podemos demonstrar que U mVn + U nVm = 2U m + n ; 8. Em princpio, notemos que apesar de estarmos tratando de somatrias infinitas, elas so a soma de uma seqncia quase nula, isto , a partir de dado elemento, todos os termos so
m nulos. Isso porque C n = 0 se m > n.

1 Iremos demonstrar, por induo, que 2 n 1U n = C n+ 2i P n (1+ 2i ) D i . Para n = 0,


i =0

1 1 2 01U 0 = 0 = C 0+ 2i P (1+ 2i ) D i e, para n = 1, 211U 1 = 1 = C1 P 0 D 0 . Suponhamos


i =0

n 1 e que a identidade vlida para todo inteiro entre 1 e n e provemos para n + 1. Pela

propriedade 1, U n +1 = PU n QU n 1 ; mas, por hiptese de induo:


1 2 n 1U n = C n+ 2i P n(1+ 2i ) D i i =0 n2 1+ 2 i n ( 2 + 2i ) Di 2 U n 1 = C n 1 P i =0

Logo,

U n+1 =

1 1 1 2 2 P C n+ 2i P n (1+ 2i ) D i 4Q C n+1 i P n (2+ 2i ) D i n 2 i =0 i =0

e,

como

1 1 2 4Q = P 2 D ento 2 n U n +1 = 2 C n+ 2i P n 2i D i P 2 D C n+1 i P n (2+ 2i ) D i . i =0 i =0

85

Assim, aplicando as operaes conhecidas com combinaes, podemos obter o seguinte resultado:
1 i 1 2 2 n U n +1 = C n+ 2i P n 2i D i + C n21 P n 2i D i + C n+1 i P n (2+ 2i ) D 1+i
i =0 i =0 i =0

Por

conseguinte,

1 0 2 2 n U n +1 = C n+ 2i P n 2i D i + C n 1 P n + C n + 2i P n (2+ 2i ) D1+i .
i =0 i =0

0 0 0 Como C n 1 = 1 = C n , ento, podemos unir C n 1 P n ltima somatria e, usando as 1 2 operaes de combinao, chegar concluso de que 2 n U n +1 = C n+1 i P n 2i D i . +
i =0

Portanto, por induo, a igualdade est demonstrada. Analogamente, mostra-se que 2 n 1Vn = C n2i P n 2i D i ;
i =0

9.

m m

m m ( )k 1 =
k 1

,
m

(
i

) = ( 1) C
k i i k i =0

m [k i ]

mi .

Ora,

(
k 1

m k

) = ( 1) C
i i k i =0 k 1 i k m (k i )

m [k i ]

mi +

i = m +1

( 1) C
i k

m (k i )

mi que, por sua vez, igual a

( 1) C
i i =0

mi

( 1)
i =0

k i

C kk i mi m (k i ) . Como C ki = C kk i , unindo as duas


2
i i k m (k i )

k 1

somatrias anteriores, temos

( 1) C (
i =0

mi + ( 1)k 2i mi m (k i ) . Finalmente,

sabendo que k 2i mpar, j que 2i par e m impar, a ultima somatria igual a


k 1

( 1) C ( ) (
i i k im i =0 k 1

m ( k 2i )

m ( k 2i ) .

Dividindo

tudo

por

temos

( 1) C Q
i i k i =0

im

U m (k 2i ) . A demonstrao da segunda igualdade anloga;

10.

Un =

a n 1 n n n 1 n 1i i n 1 caso n seja = = n 1i i + n 1i i , onde a = 2 i =0 i =0 i = a +1 a a n2 caso n seja par. Temos que U n = n 1i i + i n 1i ; logo 2 i =0 i =0

mpar, e a =

86

U n = ( ) ( n 1 2i + i n 12i ) = Q iVn 1 2i . A demonstrao da segunda igualdade


i i =0 i =0

anloga; 11. Para esta propriedade usaremos a seguinte identidade de Lagrange4: X n + Y n = ( X + Y ) ( 1)


n i =1 i

n i 1 i n 2i C n i 1 ( XY ) ( X + Y ) i

Com ela em mente, tomemos


q q

U mq

e observemos que seu numerador

mq mq = ( m ) + ( m ) , j que q mpar, e apliquemos a identidade: mq mq = ( m m ) ( 1)i


q i =1 q i q 2i q i 1 C q i 1 ( m ( m )) ( m m ) , i q 2i

Disso, temos

q i m m) mq mq ( m m ) mi ( = C q1i 1 ( ) i =1 i
q 1

que, por sua

vez, igual a D

q 1 2i q i q q 2 U m C q1i 1Q mi D U m2i . Notemos apenas que o ltimo i i =1 q 1 q 1 q +1 i , pois para i = teremos C q1i 1 = C q 32 = 0 , e 2 2 2

termo da somatria ser para i =

assim para todos os valores de i posteriores.

Propriedades 3.2.3. (Divisibilidade I)


Sejam U n = U n (P, Q ) e Vn = Vn (P, Q ) sucesses de Lucas e m, n, q, p IN , p primo. Ento valem as seguintes propriedades: 12.
U n Vn 1 (mod Q ) ; n Vn P (mod Q )
U D p 12 (mod p ) kp k p 1 D U k D 2 (mod p ), em particular, U p ( )(mod p ); p p

13.

14. 15.
4

V p P(mod p ) ; U n divide U kn ;

Identidade retirada de [RIBENBOIM 2001, p. 42]

87

16.

Se k mpar ento Vn divide Vkn .

Demonstrao
12. 13. Segue da propriedade 10; Segue da propriedade 9. Notemos que, como p primo, C ip divisvel por p para todo i entre 1 e p 1; 14. Decorre diretamente da propriedade 12. Basta considerar que, pelo teorema de Fermat, P p P(mod p ) ; 15. Pela propriedade 3, U kn = U (k 1)nVn Q nU (k 2 )n , e U (k 1)n = U (k 2 )nVn Q nU (k 3 )n ,

U (k 2 )n = U (k 3)nVn Q nU (k 4 )n , ..., U 2 n = U nVn Q n .U 0 = U nVn . Portanto, U n divide U kn ; 16. Pela propriedade 3, Vn | V3n = V2 nVn Q nVn . Alm disso, Vn | Vn , donde conclumos que, Vn | Vkn para k { ,3}. Provemos que o mesmo vale para k + 2. Pela propriedade 3, 1 V(k + 2 )n = VknV2 n Q nV(k 2 )n e, por hiptese de induo, Vn | Vkn ,V(k 2 )n , o que implica que Vn | V(k + 2 )n . Portanto, Vn | Vkn para k 1 mpar. Para prosseguir com a apresentao das propriedades, daremos mais uma definio.

Definio 3.2.1: Seja U n = U n (P, Q ) uma sucesso de Lucas. Denominamos (n ) o menor


inteiro positivo no unitrio tal que (n ) divide U n . Atentemos que no foi assumido que (n ) exista para todo n.

Propriedades 3.2.4. (Divisibilidade II)


Sejam U n = U n (P, Q ) e Vn = Vn (P, Q ) sucesses de Lucas e m, n, q, p IN , p primo. Ento valem as seguintes propriedades: 17. 18. Se MDC (n,2Q ) = 1 e se existe (n ) , ento n divide U n se, e s se, (n ) divide k; Se: a. Q e P so pares, ento U m e Vn so pares para m 2 e n 0 ; 88

b. Q par e P mpar, ento U n e Vn so mpares para n 1 ; c. Q mpar e P par, ento U n n(mod 2) e Vn par; d. Q e P so mpares, ento U n e Vn so pares se 3 divide n, e mpares caso contrrio.

Demonstrao
17. 18. Segue das propriedades 15 e 7; O item a trivial, pois U m = PU m 1 QU m 2 , sendo que a diferena entre dois nmeros pares sempre par. Analogamente para Vn , onde at V1 = P par. O item b tem uma justificativa semelhante: U 1 = 1 e V1 = P ; logo PU 1 e PV1 so mpares. QVn e QU n sempre sero par, j que Q par. Disso resulta, por recorrncia, que Vn e U n sempre sero mpares, j que a soma de um par e um mpar mpar. No item c, V0 , V1 so pares, logo Vn sempre ser par, enquanto U 1 mpar e U 2 = P par; como Q mpar, temos que U 3 ser mpar, por ser a soma de um par e um mpar. U 4 = PU 3 + QU 2 ser par, pois ambos os fatores da soma so pares; dessa forma, por recorrncia, podemos demonstrar que U n par se n for par. Por fim, provemos o item d; facilmente verificvel que U n , Vn so pares para n = 0 e n = 3 e mpares para n = 1 e n = 2. Suponhamos ento que n 3 e que 2 | U 3k 3 se, e s se, 2 | V3k , e 2 | U 3k se e s se 2 | V3k para todo inteiro k entre 1 e n ; provemos para n + 3. Ora, U n +3 = U nV3 QU n 3 (propriedade 3). Pela hiptese de induo, 2 | U n 3 se, e s se, 2 | Vn . Logo, 3 | U n+3 se, e s se, 3 | U 3n , o que prova o item c para U n . Analogamente mostra-se para Vn . A prxima propriedade to interessante que merece ser enunciada parte. Ela uma generalizao, em termos de sucesses de Lucas, do Pequeno Teorema de Fermat.

89

Propriedades 3.2.5. (Divisibilidade III: Generalizao do Teorema de Fermat)


Sejam U n = U n (P, Q ) e Vn = Vn (P, Q ) sucesses de Lucas e m, n, q, p IN , p primo. Ento valem as seguintes propriedades: 19. Se: a. b. c. d. e. p | P, Q ento p | U n para n 2 ;
p | P, p / Q ento p | U n se, e s se, a n par; |

| p / P, p | Q ento p / U n para n 1 ; | p / P, Q e p | D ento p | U n s se p | n ; | D p / P.Q, D e p | U p onde = ( ) . | p

Demonstrao
a. b. Conseqncia direta da propriedade 1; Ora, U 2 = P ento p |U 2 . Logo, propriedade 15, ento, p | U 2 k . Alm disso, sabendo que U 2 k +1 = PU 2 k QU 2 k 1 e que p / Q, P / U 1 = 1 , podemos concluir, por recorrncia, | | que p | U 2 k +1 ; c.

p / U 1 = 1 e p / U 2 = P . Ora, pela propriedade 1, U k = PU k 1 QU k 2 . Logo, por | |


| recorrncia p / U k ;

d.

Ora, a partir da propriedade 8, podemos concluir que 2 n 1U n nP n 1 (mod n ) , donde temos que 2 p 1U p 0(mod p ) , isto , p | U p . Por sua vez, pela propriedade 13,
U kp D
p 1 2

U k 0(mod p ) . Logo, se p | n ento p | U n . Em contrapartida, caso p / n , |

ento 2 n 1U n nP n 1 0(mod p ) , logo, p / U n ; | / e. Para provar este item, notemos o seguinte: p | C ip ,1 i p 1 , logo,

0 p | C ip +1 = C ip + C ip1 ,2 i p 1 e p | C 1 +1 C p . Alm disso, levemos em conta que p

p 1

(mod p ) . Provemos, ento, para o caso


p 1 2

= 1 . Ora, temos que:


p 1 2

2 p U p +1 = C 1 +1 P p + C 3 +1 P p 2 D + ... + C pp+1 PD p p

P + PD

0(mod p ) .

Assim,
90

como

mpar,

p | U p +1 .

Agora,

caso

= 1,
p 1 2

pela
p 1

propriedade
2

1,

2 p QU p 1 = 2 p PU p 2 p U p +1 , ento 2 p QU p 1 2 PD

P PD

(mod p ) ;

pelas

p 1 propriedades 8 e 13. Logo, temos 2 p QU p 1 P PD 2 0(mod p ) . Portanto,

como p / 2Q , p | U p 1 . |

Atentemos para o caso particular U m (P, Q ) para P = a + 1, Q = a , sendo a um inteiro positivo. Neste caso, verifica-se que D = (a 1) . Tomemos ento um primo p > 2 que no divide Q = a. Caso p / a2 1 | temos que p/ | D = a 1, p / P = a + 1 | e
2

a p 1 1 2 D D (a 1) 0(mod p ) . Notemos que ( ) = 1 e, pelo item e, p | U p 1 = p | a p 1 1 . / a 1 p Caso p / a 2 1 ento a p 1 1(mod p ) pelas propriedades de congruncia, pois p 1 divisvel | por 2. Ou seja, o teorema de Fermat foi demonstrado por meio das sucesses de Lucas. No prximo resultado ns veremos uma generalizao do teorema de Euler. Para tanto, definiremos trs aplicaes.
Definio 3.2.2: Seja n um nmero inteiro e assumamos as incgnitas usuais das sucesses de

Lucas. Denominamos a funo , (n ) como: 1. 2. 3. D Se n primo ento , (n ) = n ( ) ; n Se n = p b , p primo e b IN , ento , (n ) = p b 1 , ( p ) ; Se n = pi


i =1 b (i ) b(i ) , pi primo e b(i ) IN , ento , (n ) = , pi . i =1

Definio 3.2.3: Seja n um nmero inteiro tal que n = pi


i =1

b (i )

, pi primo e b(i ) IN .

Denominamos, ento, a funo como , (n ) tal que:

, (n ) = MMC{a Z , tal que a = , ( p b ), p primo e b = max{b IN , p b | n}};

91

Notemos o caso particular da funo , (n ) , onde = 1 , n primo e n / . Neste caso, | D D um nmero inteiro e, portanto, ( ) = 1 . Logo, , (n ) = n 1 . Por conseguinte podemos n concluir, utilizando a prpria definio 3.2.2 que, para n e inteiros, = 1 e MDC (n, ) = 1 , temos , (n ) =
1 i r

(p

1)( pi )

b ( i ) 1

b (1) b ( 2) b( r ) , p1 , p 2 ,..., p r a fatorao em primos de n. Em outras

palavras, , (n ) coincide com a funo tociente de Euler. Isso ser conveniente, pois entre as prximas propriedades est uma generalizao do teorema de Euler, segundo a teoria que estamos estudando.
Propriedades 3.2.6. (Divisibilidade IV: Generalizao do Teorema de Euler)

20.

Se e, f , k 1 inteiro, p e for a maior potncia de um primo mpar p que divide U m e


p / k , ento p e+ f divide U mkpf ; |

21.

Se MDC (n, Q ) = 1 ento n divide U

, (n )

e, da, n tambm divide U

, (n )

Demonstrao

20. 21.

Segue das propriedades 19, 18, 11 e 6; Pela propriedade 19, temos trs casos que atendem estas hipteses: os itens b, d e e; consideremos um primo pi fator de n e pi
e (i )

sua maior potncia que divida n. Caso pi


i

divida P ento, pelo item b, pi | U 1 . Caso pi no divida P mas divida D ento pi | U p . Por fim, caso pi no divida P e nem D, ento pi | U Dessa
2 i

, pi

( ) , pois , ( pi ) = pi (
para o primeiro

,
pi

).

forma,
3 i

pela
e (i )

propriedade
i i

20,

temos:
, (n )

caso,

pi | U p , pi | U p 2 ,..., pi pi
e (i )1
| , n ;

| U p e (i )1 e U p e(i )1 | U caso, pi
e (i )

, pois, pela definio de , n ,

no

segundo

| U p e (i )
i

U p e (i ) | U
i

, (n )

pois

, ( pi ) = pi (
no terceiro

D e (i )1 , ( pi ) = pi e(i ) . Enfim, ) = p i , j que pi | D , donde temos que pi pi pi


e(i )

caso,

|U

, pi e ( i )

pi e (i )

|U

, (n )

Portanto,

como

92

MDC p i

e (i )

, pj

e( j )

) = 1 se i j j que estamos lidando com potncias de primos distintos,


, (n )

decorre que o produto dessas potncias divide U como U


, (n )

, isto , n | U

, (n )

. Alm disso,
, (n )

| U

, (n )

pela prpria definio de , n , temos tambm que n | U

Notemos que, para = 1 , dizer que n divide U

(n )

o mesmo de dizer que

n | (n ) 1 , isto , (n ) 1(mod n ) . Portanto, temos mais uma demonstrao para o teorema de Euler: ele um caso particular da propriedade 21.
Propriedades 3.2.7. (Divisibilidade V)

Sejam m, n nmeros inteiros positivos, p um nmero primo mpar e U n (P, Q ), Vn (P, Q ) . Ento valem as seguintes propriedades: 22. Se p / 2QD ento V p 2Q |
1 2

(mod p ) , onde

Q = ( ); p

23.

Se p / 2QD e = | a. b.

, p

ento:

Q p | U se, e s se, ( ) = 1 ; p Q p | V se, e s se, ( ) = 1 . p

Demonstrao

22.

V p = 2U p +1 PU p . Ora, como p / D , pela propriedade 19, caso p | P ento |


p | U p s se p for par, o que verdade j que = 1 e p primo. Caso p / P , |

pela propriedade 19, item e, temos que p | U p , donde, V p 2U p +1 (mod p ) . Assim, caso = 1 , V p 2U p 2(mod p ) , Por sua vez, caso = 1 , V p 2U p + 2 (mod p ) onde 2U p + 2 = U pV2 + U 2V p . Enfim, pelas propriedades 13 e 14, V p P 2 V2 (mod p ) ,

93

mas

V2 = P 2 2Q ,
1 2

donde

conclumos

que

V p 2Q(mod p ) .

Como

V p 2Q 23.

(mod p ) nos dois casos possveis para , a propriedade est demonstrada;

O Item b segue das propriedades 2, 6 e 22, item a das 2, 6 e 19.

Propriedades 3.2.8. (Divisibilidade V)

Sejam m, n nmeros inteiros positivos, p um nmero primo e U n (P, Q ), Vn (P, Q ) sucesses de Lucas tal que MDC (P, Q ) = 1 . Ento valem as seguintes propriedades: 24. 25. 26. MDC (U n , Q ) = 1, MDC (Vn , Q ) = 1 para todo n 1 ; MDC (U n ,Vn ) { ,2} ; 1 Se d = MDC (m, n ) ento U d = MDC (U m ,U n ) .

Demonstrao

24.

Pela propriedade 12, temos que U n P n 1 (mod Q )

e Vn P n (mod Q ) . Como

MDC (P, Q ) = 1 , ento MDC (U n , Q ) = 1 = MDC (Vn , Q ) para todo n 1 ; 25. 26. Segue das propriedades 16 e 24; Segue das propriedades 15, 7, 24, 18 e 6.

Propriedades 3.2.9. (Divisibilidade VI)

Sejam m, n nmeros inteiros positivos, p um nmero primo e U n (P, Q ), Vn (P, Q ) sucesses de Lucas tal que MDC (P, Q ) = 1 . Ento valem as seguintes propriedades: 27. 28. 29. 30. Se MDC (m, n ) = 1 ento MDC (U m ,U n ) = 1 ; Se d = MDC (m, n ) e m n e so mpares, ento Vd = MDC (Vm ,Vn ) ; d d

Se existe (n ) ento n divide U n se, e s se, (n ) divide k; D Se p / 2QD e ( ) = 1 ento: | p a. U n+ p 1 U n (mod p ) ; 94

b. Vn + p 1 Vn (mod p ) ; 31. D Se p / 2QD , e = min{a IN * : Q e 1(mod p )} e ( ) = 1 , ento: | p a. U n+e ( p 1) U n (mod p ) ; b. Vn +e( p 1) Vn (mod p ) .
Demonstrao

27. 28. 29. 30.

Caso particular da propriedade 26; Demonstrao anloga da propriedade 28; Segue das propriedades 15, 24 e 3; Pela propriedade 4, U n + p 1 = U nU p QU n 1U p 1 . Ora, pela propriedade 19, caso p divida P, ento p | U p 1 , j que p 1 par (item b da propriedade). Caso p no divida P, pelo item e da propriedade 19 temos que
p | U p ,

onde

= ( ) = 1 . Logo,

D p

U n + p 1 U nU p (mod p ) mas, 1 = (

,
p

) U p (mod p ) , logo U n + p 1 U n (mod p ) . Alm

disso, Vn + p 1 = 2U n + p PU n e, a partir da congruncia anterior, podemos dizer que


2U n + p PU n 2U n +1 PU n Vn (mod p ) . Portanto, Vn + p 1 Vn (mod p ) ;

31.

D Pela propriedade 19, caso p no divida P, p | U p , = ( ) , isto , p | U p +1 . Caso p p divida P, ento p | U p +1 pela propriedade 15 (j que U 1 = P ). Pela propriedade 22, temos que V p +1 2Q(mod p ) . Suponhamos, ento, que Vr ( p +1) 2Q r (mod p ) verdade para
r 1 e provemos para r + 1 . Com efeito, pela propriedade 4:

2V(r +1)( p +1) = Vr ( p +1)V( p +1) + DU r ( p +1)U ( p +1) Pela hiptese de induo, Vr ( p +1)V( p +1) + DU r ( p +1)U ( p +1) Vr ( p +1)V( p +1) 2.2Q r Q(mod p ) , donde temos que V(r +1)( p +1) 2Q r +1 (mod p ) . Em particular, Ve ( p +1) 2Q e 2(mod p ) , pela definio de e. Assim, pela propriedade 7, temos que

U n +e ( p +1)Ve ( p +1) U e( p +1)Vn + e ( p +1) = Q e (r +1)U n . Mas U p +1 | U e ( p +1) donde

p | U e ( p +1) , logo 95

U n +e ( p +1)Ve ( p +1) U e ( p +1)Vn + e( p +1) 2U n + e( p +1) (mod p ) . Portanto, 2U n +e ( p +1) 2U n (mod p ) , o

que demonstra a primeira equivalncia. Para a segunda equivalncia, notemos que, pela propriedade 5, Vn = 2U n +1 PU n , donde Vn + e( p +1) = 2U n +e ( p +1)+1 PU n + e( p +1) . Mas, ento, Vn + e( p +1) 2U n +1 PU n (mod p ) e, pela prpria propriedade 5, Vn + e( p +1) Vn (mod p ) , o que encerra a demonstrao. Com isso, encerramos o embasamento terico desta monografia. Nos prximos captulos veremos como toda esta teoria discutida at o momento ser usada nos mais diversos testes de primalidade e, inclusive, em questes computacionais.

96

Captulo 4. Anlise de Custo e Algoritmos Usuais.


Neste captulo, estudaremos os procedimentos bsicos para a determinao do custo de um algoritmo. Isto ser de vital importncia para o restante do trabalho, pois os testes de primalidade sero classificados tambm de acordo com seus custos. Alm disso, determinaremos o custo de algumas operaes largamente usadas nos testes de primalidade, tal como alguns algoritmos comuns para operaes um pouco mais elaboradas, que sero muito teis para se implementar em um sistema de computao, a fim de aplicar os testes abordados neste trabalho.

3.1. Noo bsica do clculo do custo


O clculo do custo de algoritmos proveniente de uma vasta rea da Cincia da Computao, denominada Teoria dos Algoritmos. No intuito deste trabalho se aprofundar neste tema. No entanto, necessrio fazer uma pequena abordagem com este enfoque, pois a partir da anlise do custo que se determina o quanto um algoritmo eficiente. A evoluo dos testes de primalidade se deve, inclusive, busca por um algoritmo eficiente para se determinar a primalidade de um nmero. De fato, quanto maior o nmero em questo, mais trabalhoso determin-lo primo ou composto. Para ilustrar isto, tomemos um dos mais bsicos testes de primalidade: verificar a divisibilidade de dado nmero por todos os primos positivos menores do que sua raiz. Este um procedimento aparentemente simples. No entanto, inconveniente testar a divisibilidade por primos, pois o problema exatamente determinar se um nmero primo. Assumindo este procedimento, teria que se determinar a primalidade de diversos nmeros. Portanto, testemos a divisibilidade por 2 e, em seguida, por todos os nmeros mpares maiores do que 2 e menores do que a raiz do nmero testado.
N Seja N o nmero a ser testado. Notemos, ento, que teremos divises a efetuar 2

para certificar-se de que o nmero primo. Para um nmero como 93, teramos 5 divises a efetuar, o que razovel. 97

Agora, para um nmero maior, como 100.007 (cem mil e sete), teramos 159 divises. Para uma pessoa comum trabalhando manualmente, isto comea a se tornar invivel. Para um computador, no entanto, ainda um trabalho pequeno. Enfim, tomemos um nmero de 100 algarismos. Notemos que este nmero maior do que 10100 , portanto, teramos mais do que 10 49 divises a se efetuar. Claramente invivel para um trabalho manual e infelizmente tambm passa a ser invivel para um computador. Para enxergar isso, apenas suponhamos que cada diviso o computador efetue em aproximadamente um nanosegundo ( 10
9 40 s). Logo, o computador levaria mais do que 10 s para completar a operao.

Levemos em conta que um ano possui aproximadamente 30.672.000 s (trinta milhes e seiscentos
8 e setenta e dois mil segundos). Isto aproximadamente 3 10 s. Com isso, obtemos uma triste 31 estimativa de aproximadamente 3 10 anos.

Fica clara, ento, a necessidade de um teste de primalidade eficiente, alm de uma maneira eficaz de classificar o seu custo, e para isso que faremos uma pequena abordagem da Teoria dos Algoritmos.

3.2.

O Custo de Operaes Bsicas


Trataremos agora da classificao do tempo de execuo de cada algoritmo. Para isso

faamos duas constataes: Esta abordagem s interessante para computadores, pois nmeros muito grandes No conveniente falar exatamente de tempo de execuo, pois isto pode variar esto fora de questo para um teste manual. muito de computador para computador, dependendo da tecnologia. Assim, para uma abordagem mais adequada, falemos de nmero de operaes. Mais especificamente, de operaes aritmticas. Esta , de fato, uma boa referncia para a classificao de testes de primalidade. No entanto, claro que um computador efetua vrias outras operaes, no s aritmticas. Analisemos a princpio a soma de dois nmeros. Seja B a base numrica onde a operao efetuada. Naturalmente, estamos acostumados a trabalhar na base decimal, mas o computador trabalha na base binria. Sejam tambm a, b nmeros inteiros positivos. Obviamente, para uma

98

anlise efetiva do algoritmo da soma, temos que considerar cada algarismo desses nmeros. Consideremos as representaes B-dicas de a e b: a = a 0 + a1 B 1 + a 2 B 2 + ... + a n B n b = b0 + b1 B 1 + b2 B 2 + ... + bm B m Temos, assim, o representante de cada algarismo na base B. Notemos que o algoritmo da soma funciona da seguinte maneira: Efetua-se a0 + b0 . Se a 0 + b0 B , ento s0 ser o primeiro algarismo de a0 + b0 . Isto , s 0 = (a 0 + b0 ) B e a reserva ser a unidade: r0 = 1 . Se a 0 + b0 < B , ento s 0 = (a 0 + b0 ) e a reserva ser nula: r0 = 0 . Seja ai , bi os algarismos seguintes de a e b. temos ento, que: Se a reserva anterior for nula, efetua-se S = ai + bi . Do contrrio, Efetua-se S = ai + bi + 1 Se S B ento s i = S B e ri = 1 . Do contrrio, si = S e ri = 0 . Se ai , bi so os ltimos algarismos de ambos os nmeros, ento o algoritmo se encerra. Do contrrio, volte para o para o terceiro passo, assumindo os prximos algarismos. Agora, podemos dizer que o resultado da soma s = s0 + s1 B1 + s 2 B 2 + ... + s M B M . Assumamos ento, que m n , isto , a tem a mesma quantidade de algarismos ou mais do que b. Na soma do primeiro algarismo efetuou-se uma operao bsica. Na soma do segundo algarismo, se a reserva anterior for nula, efetua-se uma operao bsica, do contrrio, efetua-se duas. Isto continua para as casas seguintes. Assim, temos que o algoritmo da soma efetuou no mximo 2m + 1 operaes bsicas. Notemos que a tem, exatamente, k = m + 1 algarismos. Ento, tratando diretamente pelo nmero de algarismos de a, podemos dizer que o algoritmo da soma no tem mais do que 2(k 1) + 1 = 2k 1 operaes. Analisemos agora, o algoritmo da multiplicao. Novamente, tomemos nmeros a e b com as respectivas representaes p-dicas. O algoritmo da multiplicao toma os seguintes passos:

99

Efetua-se a bi , para i = 0,.., n . Para cada multiplicao acima, so feitas m+1 multiplicaes, isto ,

a0 bi , a1 bi ,..., am bi , sendo que, podem ser gerados m reservas. Isto , para a segunda multiplicao, caso haja reserva, soma-se r0 , para a segunda, r1 , e assim sucessivamente. Enfim, com os passos acima, obtm-se n+1 resultados, ou seja, s0 , s1 ,..., s n , sendo a soma

destes, levando em conta as grandezas de cada um, o resultado final da multiplicao. Analisando, assim, os dois primeiros passos, tm-se n + 1 multiplicaes por a, e para cada uma teremos m+1 multiplicaes devido aos algarismos, e podemos ter at m somas, devido s reservas. Assim, temos um total de (n + 1) (2m + 1) . Sendo k = m + 1 , e m n , podemos dizer que teremos no mximo k (2k 1) operaes. Agora, analisando o terceiro e ltimo passo, podemos constatar que haver um custo de no mximo 2k 2 , no total. Somando os dois resultados, chegamos ao nmero de

k (4k 1) = 4k 2 + k operaes. Levando em conta que o computador trabalha na base binria, temos que B = 2 dever ser assumido nos clculos posteriores. Tambm til notar que um nmero a possui exatamente

log B a + 1 algarismos na base B, logo, possui log 2 a + 1 na base binria.


Com isso, obtivemos as seguintes constataes:
1. 2. O nmero de operaes da soma no mximo 2(log 2 a + 1) ; O nmero de operaes da multiplicao no mximo

4(log 2 a + 1) + (log 2 a + 1) = 4log 2 a + 9 log 2 a + 5


2

3.3.

A Notao O
H um recurso para a anlise e classificao do custo de algoritmos chamado Notao O.

Resumidamente, podemos dizer que se g ( x ) o termo de maior crescimento da funo f ( x ) , isto no levando em conta o coeficiente correspondente, ento f ( x ) O( g ( x )) . Por exemplo:
f ( x ) = 5 x 3 + x 2 + 3x 9 O(x 3 ) . 100

Limitar-nos-emos apenas a esta definio informal, que suficiente para prosseguirmos com nosso estudo. Facilmente, podemos notar algumas propriedades. Se f1 O( g1 ) e f 2 O( g 2 ) , ento: 4. 5.
f1 + f 2 O(max{g1 , g 2 }) f1 f 2 O ( g 1 g 2 )

De fato, podemos dizer que f1 = C1.g1 + F1 , sendo g1 o termo de maior crescimento, C1 seu correspondente coeficiente e F1 a soma dos demais. Analogamente, f 2 = C 2 .g 2 + F2 . Sendo
f1 + f 2 = C1.g1 + C2 .g 2 + F1 + F2 , pela definio da notao O temos que O(max{g1 , g 2 }) . f1 + f 2

Alm disso

f1 f 2 = C1 .C2 .g1 .g 2 + C 2 .g 2 .F1 + C1 .g1 F2 + F1 F2 . Obviamente g1 .g 2 o

termo de maior crescimento, logo f1. f 2 O( g1 g 2 ) . Finalmente, com esta notao estabelecida, podemos dizer que:
1. 2. O custo da soma O(log 2 a ) O custo da multiplicao O(log 2 a ) 2

Deixamos de utilizar o smbolo , pois o intuito desta notao no dizer exatamente o nmero mximo de operaes de um algoritmo, e sim traar um limite para o seu crescimento. De fato, o custo da subtrao o mesmo que o da soma, enquanto o custo da diviso euclidiana o mesmo que o da multiplicao. Isto no ser demonstrado apenas assumido para utilizao nas demais anlises. A demonstrao para estes fatos pode ser encontrada em [KNUTH 1981]. Com isso, facilmente podemos determinar o custo de mais duas operaes: a adio e a multiplicao modular, isto , em Z n . Para isso, basta notar que a adio de dois nmeros a e b,
a b em Z n , possui duas operaes: a adio comum e a reduo ao menor representante das

classes, isto , uma diviso para obter-se o resto. Supondo que a < n , a primeira operao da adio teria custo O(log 2 a ) e a segunda
O(log 2 n ) . Pela primeira propriedade, ento, o custo total O(log 2 n ) . Analogamente, a 2 2

101

multiplicao em Z n possui duas operaes: a multiplicao comum e a reduo, sendo os custos, respectivamente, O(log 2 a ) e O(log 2 n ) . Logo, o custo da multiplicao tambm 2 2
O(log 2 n ) . Notemos que, se a > n , o custo da reduo de a seria O(log 2 a ), e no O(log 2 n ) . 2 2 2

Logo, temos mais dois resultados importantes para as anlises posteriores:


1. 2. O(log 2 a ) . 2 O custo da adio e da multiplicao de a, b < n em Z n O(log 2 n ) ; 2 Se a > n , a reduo de a para o menor representante de sua classe em Z n

3.4.

Classificao de Custos
Existem vrias classificaes para os custos de algoritmos. Para dado custo O( g ( x )) , as

designaes mais comuns so:

O(g(x))

Designao

O(b ) O(log x) b O x b O b cx O( x!)

Constante Logartmica Polinomial Exponencial Fatorial

Diante disso, tendemos a interpretar os resultados anteriores como operaes de custo logartmico. No entanto, esta uma interpretao equivocada. O motivo que os custos apresentados neste trabalho devem ser classificados no em funo do nmero processado, mas, sim, em funo do tamanho deste nmero, isto , da quantidade de algarismos que ele tem. Como um computador que ir processar a informao devemos ento levar em conta o nmero de bits, ou a quantidade de algarismos na base binria. Como j foi dito, podemos obter o nmero de algarismos usando o logaritmo na base 2, com um bom grau de aproximao. 102

Sendo assim, O(log b n ) deve ser classificado em funo do tamanho da entrada 2


k = log 2 n . Com essa leitura, teramos ento O(log b n ) = O(k b ) , ou seja, um processo de custo 2 polinomial.

Analogamente, O(n b ) , deve ser classificado em funo do tamanho da entrada


k = log 2 n , isto , O(n b ) = O 2b. log 2 n = O 2bk , um processo de custo exponencial.

3.5.

Custo da potenciao modulo n


Uma operao muito comum nos testes que sero estudados a determinao de r na

congruncia a b r (mod n ) . Em outras palavras, a reduo de a b ao menor representante de sua classe em Z n . A princpio, poder-se-ia dizer que seriam feitas b multiplicaes e b redues modulo n, ou seja, o custo seria O(b. log 2 n ) . No entanto, repare que este um custo exponencial, 2 em outras palavras o procedimento escolhido ineficiente. Felizmente, existe um mtodo muito mais eficiente para se fazer esta operao. Para tanto, basta pensar na representao binria do expoente em questo. Por exemplo, caso queiramos calcular 7 93 em Z 5 . A representao binria de 93 1011101. Isto : 93 = 1 + 0 21 + 1 2 2 + 1 2 3 + 1 2 4 + 0 2 5 + 1 2 6 Logo, 7 93 = 7 2 .7 2 .7 2 .7 2 .7 2 e, portanto, 7 93 7 2 .7 2 .7 2 .7 2 .7 2 (mod 5) . Generalizando, podemos dizer que, sendo a b =
0 2 3 4 6 0 2 3 4 6

0 i k b ( i ) >0

2b ( i )

, ento a b

0 i k b ( i ) >0

2b ( i )

(mod n ) .

Esta observao pode no parecer ter tanta utilidade, mas a questo que graas a esta forma,
b podemos calcular a potncia a por meio de vrios quadrados, aumentando assim a velocidade

do algoritmo. Para ilustrar melhor isto, tomemos o exemplo 7 93 . Comecemos com o

(7 (7 nmero 7 2(mod 5) . Agora, temos a sequncia de quadrados: (7 (7

2 2 4 2 8 2

32 2

) 8 1(mod 5) ) 6 1(mod 5) . ) 1 1(mod 5) ) 1 1(mod 5)


103

Com isso, temos ento que 7 2 .7 2 .7 2 .7 2 .7 2 2.1.1.1.1 2(mod 5) . Evidentemente, poderamos finalizar o nosso procedimento na segunda congruncia listada. Mas, mesmo assim, o procedimento total no deixa de ser rpido. Fora isso, no difcil obter a representao binria de um nmero: basta dividi-lo consecutivamente por 2, recolhendo os restos, at que o quociente seja 0. Enfim, arranjando toda essa informao de uma maneira mais adequada a um computador, podemos escrever o seguinte algoritmo:

3.5.1. Algoritmo da potenciao modulo n Entrada: a, b, n: inteiros positivos. Variveis: i, m, r: inteiros. Incio

1. i 2. m
3. r

b a mod n
1

4. Enquanto i 1 e m > 1 faa:

5. 6.
7.

Se i mpar ento r

(r.m) mod n

m i

m.m mod n i div 2

8. Fim_Enquanto

9. Retorne r
Fim_Programa

104

Anlise do algoritmo 3.5.1


Primeiramente, verifiquemos que o algoritmo realmente retorna a reduo a b mod n . Na linha 1, atribudo o expoente varivel i. Na linha 2, feita a primeira reduo, e na linha 3 a varivel r iniciada com o valor 1. Agora, analisemos o lao que inicia na linha 4, onde est toda a funcionalidade do algoritmo: repare que o procedimento da linha 5 unido ao procedimento da linha 7 exatamente o levantamento da forma binria de b. Na primeira volta do lao, i exatamente b. se b mpar, significa que o bit 0 do nmero 1. Sendo assim, a mod n dever ser calculado usando o mtodo sugerido e, portanto, adicionado a varivel r, que conter o resultado final do algoritmo. Na linha 6, calculado o quadrado de m, na primeira execuo do lao este exatamente o quadrado de a. Finalmente atribudo varivel i o resultado inteiro da diviso de i por 2. Na segunda volta, j foi feita uma diviso de b por 2, e se i for mpar, significa que o bit 1 de b 1 e, portanto, o quadrado de a tambm dever ser calculado no resultado. Ento, o valor anterior de r multiplicado pelo quadrado de a, que foi calculado na volta anterior, e o resultado atribudo novamente varivel r. Na linha 6 calculado, ento o quadrado de m, isto , a quarta potncia de a, de acordo com o mtodo mencionado acima, e na volta posterior, caso o bit 2 seja 1, ser atribudo varivel r o produto de seu valor anterior por este resultado, e isso vai se repetir at que a diviso da linha 7 resulte em 0. Enfim, se o bit i de b for 1, ento calculado no produto final tambm o fator a 2 , que exatamente o mtodo exemplificado acima e, portanto, o algoritmo efetivamente retorna a reduo a b mod n . Apenas mais um detalhe: o lao tem uma segunda condio: m > 1 . Esta condio serve apenas para agilizar o algoritmo em algum caso particular. Isto , como descrevemos acima, m conter a elevado a alguma potncia de 2, e caso esta varivel assuma, em algum momento, o valor 1, temos a caracterizao do mesmo caso que ocorreu com o exemplo dado acima: 7 93 mod 5 . Neste caso, nenhum clculo a mais precisar ser feito, pois a varivel r manter seu resultado. No entanto, temos que analisar o custo do algoritmo no pior caso possvel, ou seja, quando isso no acontece. Vejamos, agora, o custo do algoritmo: 105
i

As trs primeiras linhas possuem como nica operao aritmtica uma reduo

modulo m, que tem custo O log 2 (max{a, n}) ; 2 O lao que vai da linha 4 linha 8 possui trs operaes aritmticas: duas redues e uma diviso euclidiana. Podemos ignorar a diviso da linha 6, pois, sendo o divisor 2, o computador tem uma grande eficincia em sua execuo. Agora, quanto s divises da linha 5 e 6, ambas tem custo O(log 2 n ) . Reparemos que a verificao da paridade de u, na linha 5, no 2 uma operao aritmtica, e sim uma anlise binria, pois o nmero mpar caso seu primeiro bit seja 1, e par caso seja 0. Agora, importante notar que este lao ir ser executado quantas vezes a varivel u for dividida por 2 e no resultar em 0. Logo, podemos dizer que o lao ir ser executado aproximadamente log 2 n vezes. Portanto, o custo total do lao O log 2 b. log 2 n ; 2 Ento, pela primeira propriedade da notao O, o custo total do algoritmo

) isso, sabemos que o algoritmo no tem custo maior do que O(log k ) e, portanto um algoritmo
O max log 2 (max{a, n}), log 2 b. log 2 n 2 2
3 2

})

que O log 2 b. log 2 n . Seja ento k = max{b, n} . Com 2

eficiente, tem custo polinomial. Uma ltima observao sobre o custo do algoritmo que geralmente m ser maior do que

n nos demais testes a serem analisados, por isso podemos assumir o custo desse algoritmo
simplesmente por O log 3 n . 2 Enfim, o algoritmo tem custo polinomial, e em muitos casos sua execuo terminar antes mesmo da anlise de cada bit do expoente b, devido segunda condio que ele contempla, oferecendo ento uma execuo realmente eficiente.

3.6. Algoritmo Euclidiano Estendido


Outro algoritmo que tem muita utilidade o j citado Algoritmo Euclidiano Estendido. Precisaremos, em alguns momentos, determinar o mximo divisor comum de dois nmeros. No entanto, o algoritmo apresentado no final da seo 1 no primeiro captulo inadequado para o computador. Isso porque no s o mximo divisor comum que obtemos a partir deste algoritmo, como bem vimos na seo 2 do segundo captulo. O teorema 1.3.1 (teorema de Bezout) nos mostra que dados a, b, d Z onde d = MDC (a, b ) podemos escrever d = ar + bs para algum par
r , s Z . Chamemos convenientemente este par de coeficientes de Bezout. Para determinar este

106

par, precisamos recorrer srie de resultados parciais obtidos pelo algoritmo euclidiano. Infelizmente, para um computador isso implicaria em guardar uma srie muito grande de informaes, o que pode comprometer seu desempenho. O ideal guardar o mnimo de informao possvel para assim no haver consumo desnecessrio de memria. O algoritmo

euclidiano estendido serve exatamente para este fim.


A questo que recursivamente vamos usando os resultados obtidos para escrever o ltimo resto no nulo, no caso o mximo divisor comum, como a soma dos produtos de a por um nmero e de b por outro. No entanto, caso usssemos os dados procurando fazer a mesma coisa para o penltimo resto no nulo, o resultado seria semelhante: o penltimo resto escrito como a soma dos produtos de a por um nmero e de b por outro. Mas ento poderamos fazer isso a partir de qualquer etapa do algoritmo, e para cada resto parcial teramos um par de coeficientes para a e

b particular.
Digamos, ento, que obtemos o resto ri e pelo o que foi discutido podemos escrev-lo como

ri = xi a + yi b . Os dois imediatamente anteriores seriam

ri 1 = xi 1 a + yi 1 b

ri 2 = xi 2 a + yi 2 b . Ora, mas de acordo com a interao determinada no algoritmo euclidiano,


foi efetuada uma diviso para obter-se ri , no caso foi ri 2 = qi ri 1 + ri , o que implica que

ri = ri 2 qi ri 1 .

Substituindo

ento,

nesta Isolando

equao,

os

resultados obtemos,

anteriores: ento que

ri = ( xi 2 .a + yi 2 .b ) ( xi 1 .a + yi 1 .b ).qi .

ri = a (xi 2 + qi .xi 1 ) b( yi 2 + qi . yi 1 ) . Isto , xi = xi 2 + qi .xi 1 e yi = yi 2 + qi . yi 1 .


Notemos que todas estas observaes levaram a uma concluso til: podemos escrever os coeficientes de a e b para cada resto em funo dos dois ltimos coeficientes obtidos. Em outras palavras, caso prossigamos recursivamente obtendo os coeficientes em cada resto medida que seguirmos com os passos do algoritmo, ao final deste obteremos os coeficientes para o ltimo resto, isto , os coeficientes de Bezout. Agora s mais uma observao: como iremos calcular os coeficientes para o primeiro resto j que no h restos anteriores? Para isso, podemos observar o seguinte:
a = 1.a + 0.b e b = 0.a + 1.b . Portanto, apesar de no haver restos anteriores, temos

tambm coeficientes para a e b em forma correspondente que discutimos.

107

Para ilustrar o que dissemos, vamos escrever, em forma de tabela, os passos para calcular o MDC e os coeficientes de a e b correspondentes. O exemplo ser o mesmo usado na seo 2 do

captulo 1: dos nmeros 5830 e 1760.


Resto
5830 1760 550 3 3 5

Quociente

X
1 0 1 3.0 = 1 0 1.3= 3

Y
0 1 0 3.1 = 3 1 3. ( 3) = 10

110
0

Notemos que os resultados apresentados acima so os mesmos apresentados na seo 1.2, no exemplo de obteno dos coeficientes discutidos. No entanto, organizamos de outra maneira e acrescentamos as colunas X e Y para mostrar o processo recursivo de obteno dos coeficientes

de Bezout. Obtemos exatamente o mesmo resultado que no exemplo da seo 1.2: - 3 e 10 e, de


fato, 110 = 3 5830 + 10 1760 . luz deste exemplo, resta-nos transcrever o algoritmo que traduz cada passo necessrio:

108

3.6.1. Algoritmo Euclidiano Estendido Entrada: a, b: inteiros positivos. Variveis: x1, x2, y1, y2, r, r1, q, x, y: inteiros. Incio

1. 2. 3. 4.
5. 6. 7. 8. 9. 10. 11. 12. 13. 14.

(x1, y1) (x2, y2)

(1, 0) (0, 1)

r q r1

b a r
(q div r, q mod r) (x, y) (x1, y1) (x2, y2) ( x1 q.x2, y1 q.y2) (x2, y2) (x, y)

Enquanto r > 0 faa:


(q, r)

Se r > 0 ento

q
Fim_Se

r1

Fim_Enquanto Retorne (r1, x2, y2)

15.

Fim_Programa Anlise do Algoritmo 3.6.1


Notemos que no lao comeamos dividindo a por b, j que estes so os valores iniciais de

q e r. Na prxima volta, q valer b, o valor anterior de r que foi guardado na varivel r1,
enquanto r conter o resto da ltima diviso. Logo, a prxima diviso ser feita entre b e r, o primeiro resto. Novamente, o valor de r foi guardado na varivel r1 e q o assumir, enquanto r ter o resto da ltima diviso. Isso prosseguir at que r valha 0, o que j foi visto que acontece, na seo 1.2. Durante todo esse processo, a forma recursiva encontrada para os coeficientes aplicada na linha 17, enquanto na linha 18 e 19 os valores dos dois ltimos coeficientes so 109

sempre guardados. Com isso, v-se que os coeficientes x2 e y2 correspondem aos restos obtidos na ltima diviso. Isso s no valer quando o ltimo resto for 0, e neste momento x2 e y2 sero os coeficientes correspondentes ao ltimo resto no nulo, isto , eles sero exatamente os

coeficientes de Bezout. Por fim, o algoritmo retorna o ltimo valor armazenado em r1 que, por
essa lgica, ser o ltimo resto no nulo, isto , o mximo divisor comum, alm dos procurados

coeficientes de Bezout: x1 e y1.


Com isso, v-se que este algoritmo extremamente til, pois mantm o uso de memria controlado e ainda obtm as trs informaes que esperamos do algoritmo euclidiano. Passemos ento para o estudo de seu custo. As nicas linhas que apresentam custos relevantes sos as 16 e 18, sendo este O log 2 b para ambas, j que b o maior valor que r 2 assumir. necessrio ento determinar quantas vezes o lao da linha 14 ser executado. Todavia, comeamos dividindo a por b, depois b pelo resto da anterior, depois o penltimo resto pelo ltimo e assim por diante. Claramente, os restos consecutivos sero menores do que b donde podemos concluir que no haver mais do que b divises. Mas, caso em uma das divises o resto obtido seja muito prximo do divisor, ento a prxima diviso fornecer um quociente em um nmero muito prximo de um, caso o resto obtido seja muito prximo de zero, ento a prxima diviso fornecer um resto ainda mais prximo de zero. Nos dois casos, o nmero de divises consecutivas cai drasticamente, donde podemos supor que o caso onde o nmero de divises ser mximo ser quando os restos forem sempre a metade do divisor. Logo, no pior caso os restos pertencero sequncia s i =

b . Portanto, o nmero mximo de divises que efetuaramos 2i

k = log 2 b , donde conclumos que o custo deste algoritmo O(log 3 b ). 2


3.6.2. Algoritmo: Inverso em Zp
Notemos que, a partir do algoritmo apresentado acima, podemos definir uma funo para calcular o inverso de um elemento a Z p . Ora, isso equivalente a resolver a congruncia linear

ab 1(mod p ) , que por sua vez equivalente a resolver a equao diofantina ab qp = 1 . Como
queremos calcular o inverso de a, estamos assumindo que MDC (a, p ) = 1 , logo, pelo teorema

1.3.1, temos que a equao diofantina acima tem soluo e, mais do que isso, podemos aplicar o
110

algoritmo euclidiano estendido e encontrar os coeficientes b e q. Claramente, s nos interessa o b, o inverso de a. Com isso, podemos enunciar o algoritmo da seguinte maneira:

Inverso_Modulo_n Entrada: a, b: inteiros positivos. Variveis: max, i, u; inteiro Incio


1. 2. 3. (max, i, u)

Algoritmo Euclidiano Estendido(a, b)

Se Max = 1 ento Retorne i Seno Retorne 0

Fim_Programa
Obviamente, o custo deste algoritmo tambm O log 3 b e, na verdade, to simples e 2 direto que dispensava ser enunciado. S fizemos isso, pois na prxima seo precisaremos de tal funo.

3.7.

Teste Eficiente da potncia Perfeita


Primeiramente, um inteiro positivo n uma potncia perfeita se n = a b , onde a e b so

inteiros. conveniente para ns estabelecermos um algoritmo que verifique se dado n uma potncia perfeita em tempo polinomial, pois precisaremos disto mais frente. Bem, para tanto precisaremos de uma verso alternativa do mtodo de Newton5. Esta verso usa reduo mdulo

m em seus resultados.
As demonstraes a seguir usaro conceitos de clculo: a derivada e limite.

Notao: A derivada de f ( x ) denotada por f ' ( x ) .

O mtodo de Newton usado para determinao de um polinmio. Para mais detalhes sobre o mtodo clssico de Newton, consulte: [RUGGIERO 1996]

111

Propriedades 4.7.1:

1. A derivada de uma constante c sempre igual a 0; 2. A derivada de um monmio c x n igual a: nc x n 1 ; 3. Dado f ( x ) = f 0 ( x ) + f1 ( x ) + ... + f n ( x ) , ento temos: f ' ( x ) = f 0 ' ( x ) + f1 ' ( x ) + ... + f n ' ( x ) ; 4. Dado h( x ) = f ( x ) g ( x ) , ento, temos:

h' ( x ) = f ' ( x ) g ( x ) + f ( x ) g ' ( x ) ;


Agora, tomemos como exemplo: f ( x ) = x 2 + 4 x + 4 . Pelas proposies acima temos:

f ' ( x ) = 2 x1 + 4 + 0 = 2 x + 4 . Agora, notemos que f ( x ) = ( x + 2 ) ( x + 2 ) . Ora, pelas proposies


acima temos: f ' ( x ) = 1 ( x + 2) + ( x + 2 ) 1 = 2 x + 4 . Limitar-nos-emos apenas a este exemplo. Para um estudo mais aprofundado sobre derivadas, consulte [GUIDORIZZI 1991]. Passemos, ento, para as demonstraes necessrias para estabelecermos o algoritmo:

Lema 4.7.1: Sejam g(x) um polinmio com coeficientes inteiros, e a Z . Tm-se que ( x )

divide g(x) se, e s se, g ( ) = g ' ( ) = 0 .


Demonstrao
Ora, se ( x ) divide g(x), ento g ( x ) = ( x ) h( x ) , para algum polinmio h( x ) . Neste caso, g ' ( x ) = 2( x ) h( x ) + ( x ) .h' ( x ) . Assim, para x = , temos: g ( ) = g ' ( ) = 0 . Agora, suponhamos que g ( ) = g ' ( ) = 0 . Temos que x divide g (x ) e g ' ( x) . Logo:
2 2 2

g ( x) = ( x ) q( x ) g ' ( x ) = q( x ) + ( x ) q ' ( x ) , mas

g ' ( ) = 0 , ento: q( ) = 0 .
2

Assim, temos que x divide q(x) , e, portanto, g ( ) = ( x ) q( x ) = ( x ) q 0 ( x ) .

112

Lema 4.7.2: Sejam f ( x ) Z [x ] e Z . Ento f ( x ) = f ( ) + f ' ( )( x ) + h( x )( x ) , para


algum h( x ) Z [x ] .

Demonstrao
Seja

g ( x ) = f ( x ) f ( ) f ' ( ) ( x ) .

Ento

g ' ( ) = f ' ( x ) f ' ( ) .


2

Ora,

g ( ) = g ' ( ) = 0 , ento, pelo lema 3.6.2, temos que g ( x ) = h( x ) ( x ) . Logo: h( x ) ( x ) = f ( x ) f ( ) f ' ( ) ( x ) , isto , f ( x ) = f ( ) + f ' ( ) ( x ) + h( x ) ( x )
2 2

O teorema abaixo uma verso mdulo p do algoritmo de Newton, e o resultado chave de para nosso algoritmo.

Teorema 4.7.1: Sejam e p > 0 inteiros, onde p primo, e seja f ( x) Z [x ] tal que f ' ( )

inversvel mdulo p e f ( ) 0(mod p k ), para algum inteiro k > 0 . Se:

f ( )( f ' ( ))1 (mod p 2 k )


Ento: 1. 2. 3.
Demonstrao
1. Se f ( )( f ' ( )) por hiptese, f ( ) 0 mod p k

(mod p k )
f ( ) 0(mod p k ) f ' ( ) inversvel mdulo p.

(mod p ) ento ). Logo, (mod p ).


1
2k

f ( )( f ' ( ))1 (mod p k ) . Mas,

2. Pelo lema 4.7.2 temos

f ( x ) = f ( ) + f ' ( )( x ) + h( x )( x ) , para algum


2

polinmio h( x ) Z [x] . Logo, f ( ) = f ( ) + f ' ( )( ) + h( )( ) . Mas, como visto logo acima, mod p k isto , p k | , donde temos:

113

p 2 k | ( ) ( ) 0(mod p 2 k ) .
2 2

que

(mod p ) , donde podemos concluir f ( ) f ( ) + f ' ( )( ) f ( ) + f ' ( )( f ( )( f ' ( )) ) 0(mod p ). Assim, o item 2
No entanto, por hiptese f ( )( f ' ( ))
1
2k

2k

vlido. 3. Sabemos que mod p k , ento inversvel, f ' ( ) tambm inversvel em mdulo p. Agora, tendo em vista o teorema anterior, precisamos mostrar que uma raiz mdulo p de um polinmio que atenda as condies do teorema 4.7.1 nica. Demonstraremos isso no prximo teorema.

f ' ( ) f ' ( )(mod p k ) . Como

f ' ( )

Teorema 4.7.2: Sejam e p > 0 inteiros onde p primo, e seja f ( x) Z [x] tal que f ' ( )

inversvel mdulo p e f ( ) 0(mod p k ). Se, para algum inteiro 1 , 2 e k > 0 , tivermos que: 1. 2.

1 2 (mod p ) ;
f (1 ) f ( 2 ) 0(mod p k ) ;

Ento 1 2 (mod p k ) .
Demonstrao
Pelo lema 4.7.2, temos que f ( x ) = f ( 1 ) + f ' (1 )( x 1 ) + h( x )( x 1 ) , para algum polinmio
2

h ( x ) Z [x ] .

Logo

f ( 2 ) f ( 1 ) = ( 2 1 )( f ' (1 ) + h( 2 )( 2 1 )) .

Mas

f ' (1 ) + h( 2 )( 2 1 ) f ' (1 ) f ' ( ) (mod p ) , j que

1 2 (mod p ) . Finalmente,

temos que f ' ( ) inversvel mdulo p, o que implica que ele inversvel mdulo p k , logo

f ' (1 ) + h( 2 )( 2 1 ) tambm . Chamemos ento seu inverso de u e tomemos a congruncia f ( 2 ) f (1 ) ( 2 1 )( f ' (1 ) + h( 2 )( 2 1 ))(mod p k ) . Multiplicando os dois termos por u
temos que

u ( f ( 2 ) f (1 )) ( 2 1 )(mod p k ) .

Mas,

pela

hiptese

2,

f ( 2 ) f (1 ) 0(mod p k ) . Portanto, 1 2 (mod p k ) .

114

Por fim, podemos formular o algoritmo, com base nos resultados obtidos. Este algoritmo verificar se um dado inteiro mpar a tem uma potncia n-sima inteira para um tambm um dado

n. Como ser discutido na anlise do algoritmo, se esta operao for resolvida em tempo
polinomial, ento descobrir se a uma potncia n-sima para um n qualquer tambm pode ser resolvido em tempo polinomial.

3.7.1. Algoritmo: Teste da Potncia Perfeita Entrada: Inteiros positivos mpares a e n Variveis: k, r, S, i, T: Inteiros Incio
1. 2. 3. 4. 5. 6. 7. 8. 9. 10.

k r S

log 2 a n

log 2 k
1

Para i de 1 at r faa

T T S
Fim_Para

n S n 1 mod 2 2

)
i
2i

Inverso _ mod ulo _ n T ,2 2 S (S n

( ) a ).T (mod 2 )

Sn a

Retorne (R = 0)

Fim_Programa Anlise do algoritmo 4.7.1


O intuito deste algoritmo encontrar uma raiz inteira para o polinmio f ( x ) = x n a . Esta raiz existe se e s se a uma potncia n-sima de algum inteiro. Os valores para x so trabalhados pela varivel S, no entanto calcular o valor de x n para vrios valores de x muito custoso e, devido a isso, trabalhamos apenas com hipteses conhecidas sobre estes valores. Seja

115

ento S j o valor de S na volta de nmero j do lao da linha 4, as hipteses com a qual trabalhamos so as seguintes:

1. 2. 3.

j S j 1 mod 2 2 j f (S j ) 0 mod 2 2

f ' (S j ) inversvel mdulo 2.

Toda a validade do algoritmo depende de que estas hipteses sejam verdadeiras para qualquer valor de S j . Ento, primeiramente precisamos verificar se isso verdade. Aps isso, mostraremos como, a partir delas, poderemos concluir se a ou no uma potncia n-sima, para s ento verificar o custo do algoritmo.

Primeira Parte: Validade das hipteses.


Consideremos que a primeira volta do lao a volta zero, j que este o valor de seu contador. Mas, como podemos ver na linha 3, o primeiro valor para S exatamente 1. Logo,

S 0 = 1 . Alm disso, a mpar , o que garante que f (1) = 1n a seja par, e n tambm mpar e,
portanto f ' (1) = n.1n 1 inversvel mdulo 2, isto , f ' (1) 1(mod 2 ) . Portanto, para j = 0 as trs hipteses so verdadeiras. Suponhamos ento que seja vlida para j 0 e provemos para j + 1 . Reparemos que, pela linha 7, S j +1 = S j S n a . nS n 1 j

)(

mod 2 2 j +1 e, por hiptese de

j induo f ' (S j ) inversvel mdulo 2 e f (S j ) 0 mod 2 2 logo, pelo teorema 4.7.1, as

hipteses tambm so vlidas para j + 1. Portanto por induo as trs hipteses valem para qualquer valor que S assuma durante o algoritmo.

Segunda Parte: Validade do Algoritmo


j j Pela hiptese 2, temos que f (S j ) 0 mod 2 2 , isto , S n a 0 mod 2 2 . Aps r j

voltas ento teremos que S rn a mod 2 2

log a mas, pela linha 2, r = log 2 2 , logo n

1 r log 2 log 2 a n . Com isso em mos, suponhamos que a = n par algum inteiro . Isso

implicaria que S rn n mod 2 2 . No entanto, pelo teorema 4.7.2, temos que S r mod 2 2 . 116

Finalmente, = a n , mas 2 2 a
r

1 = , j que r log 2 log 2 a n , o que implica que, r

2 2 . No entanto, como S r e a so positivos e menores do que 2 2 , j que obtemos S r com


uma sucesso de redues mdulo 2 2 , eles s podem ser iguais. Do contrrio, no poderiam ser congruentes. Portanto, se existe raiz n-sima de a inteira, esta raiz ser igual a S r , bastando ento verificar se S r raiz do polinmio f ( x ) = x n a , como feito nas linhas 9 e 10.
r

Terceira Parte: Custo do Algoritmo


Podemos ignorar o custo das linha 1, 2 e 3 por serem muito baixos, j que as operaes tem custo baixo. O custo da linha 5 , como podemos ver na seo 4.5, no mximo

O log 3 2 2 . log 2 n = O 2 3r . log 2 n que, por sua vez, O(2 4 r . log 2 n ) = O(log 4 a log 2 n ) . O custo 2 2
da funo da linha 6 no mximo O log 3 a , de acordo com a seo 4.6. O custo do clculo da 2 potncia na linha 7 tambm O log 4 a log 2 n . Finalmente, consideremos que estas trs linhas 2 sero executadas

( ( )
r

vezes.

Mas

log a r = log 2 2 , n

ento

r < 1 + log 2 log 2 a .

Como

log 2 log 2 a < log 2 a , podemos concluir que o custo do lao O log 6 a . Falta apenas uma nica 2 2 operao: a da linha 9. A princpio ela seria uma operao custosa, mas temos um limite para a varivel n. Suponha que a de fato uma potncia perfeita. Ora, caso isso seja verdade, n ser o maior possvel, caso a seja uma potncia perfeita de 2. Como a mpar, sabemos que n nunca atingir este nmero, mas por convenincia bom adotarmos este critrio de limitao para n. Assim, temos que n < log 2 a . Portanto, a operao da linha 9 ser uma multiplicao efetuada no mximo log 2 a vezes, sendo seu custo O log 2 a. log 2 a = O log 3 a . 2 2 Enfim, o custo do algoritmo
6 2

( ) ( ) O(log a ) e, portanto o algoritmo polinomial. Agora, o

algoritmo no verifica se a uma potncia perfeita, ele verifica se a uma potncia n-sima. O que, ento poderamos fazer para verificar se a uma potncia perfeita a partir deste algoritmo? Basta verificar para todos os valores possveis de n. Como discutido logo acima, n < log 2 a . Portanto, podemos descobrir se um dado a uma potncia perfeita repetindo este algoritmo no mximo log 2 a vezes, o que pode ser feito com um custo de O log 7 a , que tambm 2 polinomial. 117

3.8.

Custo do Clculo do Smbolo de Jacobi


Outro clculo que usaremos nos testes de Primalidade o clculo do Smbolo de Jacobi.

Portanto, conveniente que tambm j determinemos um custo para tal operao. Para obtermos um algoritmo eficiente, teremos ento que usar a Lei da Reciprocidade Quadrada6. No difcil verificar que, como consequncias diretas das propriedades 2.4.2, do

teorema 2.4.2 e do corolrio 2.4.2, podemos obter esta srie de regras, para se calcular o smbolo de Jacobi: a 1. ( ) o mesmo para b tal que b a(mod n ) ; n a 2. Se a = 0 ( ) = 0 para n ; n a 3. Se a = 1 ( ) = 1 para n . n a 4 a 4. Se 4 | a ( ) = ( ). n n a 2 a 1 ( n ) = ( n ) se a mod 8 { ,7} 5. Se 2 | a ( a ) = ( a 2 ) se a mod 8 {3,5} n n a n' 6. Se a 1 (mod 4 ) ou n 1(mod 4 ) ( ) = ( ), n' n mod a n a a n' 7. Se a 3(mod 4) ou n 3(mod 4 ) ( ) = ( ), n' n(mod a ) n a
Estas regras facilitam e agilizam o clculo do Smbolo de Jacobi, principalmente quando lidamos com nmeros muito grandes. Por fim, estabelecida estas regras, podemos sintetiz-las em um algoritmo. Com isso, poderemos calcular o custo e implementar a aplicao posteriormente:

A teoria sobre Smbolo de Jacobi e Lei da Reciprocidade Quadrada podem ser vistas no captulo 1, seo 9.

118

3.8.1. Algoritmo do smbolo de Jacobi Entrada: Inteiro a, inteiro mpar n 3 Variveis: b,c , s: Inteiro.
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.

b c s

a mod n n
1

Enquanto b 2 faa: Enquanto 4 | b faa b Se 2 | b ento Se c mod 8 {3,5} ento s


s

b 4

b
Fim_Se

b 2

Se b = 1 ento Retorne s b Se b mod 4 = c mod 4 = 3 ento s

(b, c )
Retorne s b

(c mod b, b )

Fim_Enquanto

Fim_Programa Anlise do Algoritmo 4.7.1


No h muito segredo para o funcionamento deste algoritmo. Ele simplesmente aplica as regras citadas anteriormente de forma que nas variveis b e c sempre teremos valores

b a correspondentes ao smbolo de Jacobi ( ) = ( ) . O lao principal (da linha 4) ir ser executado c n b at que b = 0 ou b = 1 , pois amparado nas regras trs e quatro, j pode definir-se o valor de ( ) c
nestes casos. O sinal do resultado sempre ser guardado na varivel s, portanto basta verificar que 119

todas as regras so executadas corretamente. A linha 5 aplica-se a regra 4, da linha 6 9 aplica-se a regra 5, a linha 10 simplesmente encerra o processo, evitando os prximos passos que no se aplicariam caso b = 1 . Agora, as linhas 11 e 12 so a aplicao das regras 6 e 7. Notemos que todas as regras so cumpridas com rigor, e na varivel s o sinal do resultado sempre mantido.

b a Portanto, a todo o momento, teremos ( ) = ( ) e no final do processo no ser exceo. c n


Agora, veremos que o custo do algoritmo muito baixo. A maior parte das operaes so divises ou redues modulares por 2, 4 ou 8. No entanto, estas operaes tem custo nfimo em um computador. Isto porque o computador faz todas as suas contas na base 2, e tais divises e restos no passariam de uma verificao binria muito simples. Comparemos isso a dividir um nmero qualquer por 10, 100 ou 1000 na base decimal. So operaes que dispensam qualquer conta, basta deslocar os algarismos. Verificar a reduo modular nessas bases tambm simples: basta ver o ltimo, os dois ltimos ou os trs ltimos algarismos. O computador faria operaes semelhantes em um nvel binrio. Com isso, reduzimos a nossa anlise a apenas dois passos do algoritmo: a linha 1 e a linha 12. Ora, as operaes efetuadas no lao principal fazem os valores de b e c decarem muito rapidamente. Notemos que s pela linha 12 isso j ocorre muito rpido (b recebe c mod b e c recebe o antigo valor de b. Lembre-se que isso ser repetidamente executado). Devido a isso, podemos levar em conta apenas a 1 volta do lao. Notemos que n mpar e na linha 1 b recebe a mod n . Se b receber n 1, ento ele ser par e, portanto, reduzido antes de chegar linha 12. Logo, podemos dizer que na linha 12 b no mximo n 2. Como c na primeira volta ser igual a n e b no mximo igual a n - 2, ento o custo da linha 12 seria no mximo O log 2 n . Como este tambm o custo da linha 1, ento o custo deste 2 algoritmo , afinal, O log 2 n . Tambm podemos ver uma anlise deste algoritmo em 2 [DIETZFELBINGER 2001 pag. 91].

3.9.

Resumo dos resultados obtidos


Neste captulo, obtemos resultados teis para a anlise do custo de execuo dos testes

que so estudados neste trabalho, introduzindo a notao O para tanto. Os resultados so, primeiramente, as seguintes propriedades relativas a esta notao: Se f1 O( g1 ) e f 2 O( g 2 ) , ento: 120

1. 2.

f1 + f 2 O(max{g1 , g 2 })

f 1 f 2 O( g1 g 2 )
Se dado algoritmo tiver custo O(log b n ) , sendo b constante, ento dizemos 2 Se dado algoritmo tiver custo O(n b ) , sendo b constante, ento dizemos que

Determinamos tambm o seguinte critrio de avaliao para o custo dos algoritmos:

1.

que este tem custo polinomial; 2.

este tem custo exponencial;


Alm disso, obtemos os seguintes custos que sero amplamente usados nas anlises de custos posteriores:

1. 2. 3. 4.
5.

Da soma e da subtrao: O(log 2 n ) ; Da multiplicao e diviso: O log 2 n ; 2 Da adio e da multiplicao em Z n : O(log 2 n ) ; 2 Da reduo a mod n, sendo a > n: O(log 2 a ); 2
b Da reduo a mod n , por meio do eficiente algoritmo de potenciao mdulo

m: O(log 3 n ) ; 2
6. 7.

Da verificao da potncia perfeita: O(log 7 n ) ; 2 a Do clculo do smbolo de Jacobi ( ) O(log 2 n ) . 2 n

121

Captulo 5. Testes de Primalidade.


Tendo em vista os conceitos algbricos e computacionais apresentados at o momento, iremos agora estudar propriamente os Testes de Primalidade. Apresentaremos primeiramente uma cronologia dos testes mais significativos, tendo em vista a evoluo destes. Em seguida, faremos uma anlise da validade e do custo apenas de alguns. De fato, certos testes apresentados nesta cronologia baseiam-se em conceitos algbricos muito avanados, que fogem das ambies deste trabalho. Os testes Miller-Rabin e Solovay-Strassen estudaremos em captulos separados, pois exigem um pouco mais de anlise do que os outros.

4.1. Cronologia dos testes de primalidade


(Sc. III AC). Crivo de Eratstenes
Foi o primeiro mtodo para se determinar primos. Ele se baseia em um processo de excluso, onde restaro apenas nmeros primos no final. Depois deste teste, no houve mais outras propostas, at que se passasse a Idade das Trevas, e novamente fossem feitos estudos matemticos deste tipo. 7

(1876). Teste de Lucas

Foi o primeiro teste de primalidade da era moderna, usando principalmente o Pequeno Teorema de Fermat. O Teste de Lucas se baseia em uma recproca verdadeira do Pequeno Teorema de Fermat. No entanto, suas exigncias so demasiadas altas para que o teste seja feito com eficincia para nmeros muito grandes.

Seu criador, Eratstenes, foi um dos grandes sbios da antiguidade. Nasceu em 276 a.C., na cidade de Cirene, na Grcia. Morreu provavelmente em 194 a.C., em Alexandria. Foi matemtico, gegrafo e astrnomo. Entre seus feitos, os mais famosos so o de ter constatado a esfericidade da Terra e ter medido com razovel preciso a circunferncia da Terra, seu permetro, e a distncia da Terra ao sol. Em 236 a.c., foi escolhido como diretor da biblioteca de Alexandria, o maior centro de conhecimento e estudos da poca. Aproximadamente em 195 a.C., sabe-se que ele ficou cego, e diz a histria que isso lhe causou tanto desgosto por no mais poder observar os astros e apreciar os papiros que, em 194 a.C., se trancou na biblioteca de Alexandria deixando de se alimentar, e morreu por inanio.

122

(1878).

um critrio til para provar se nmeros de uma forma

Critrio de Proth particular so primos. (1891) teste de Lucas (1967) Terceira forma do Teste de Lucas (1975) Teste de Morrinson (1975) Teste de Miller
Lucas obteve este teste aps alguns avanos em suas anlises. assim suas exigncias o deixam lento para nmeros grandes. 8 a ltima forma deste teste. No foi proposta por Lucas, e sim por Brillhart e Selfridge. Nesta ltima forma, o nmero de verificaes feitas pelo teste bem menor do que nas anteriores, mas ainda assim o teste permanece ineficiente. um dos inmeros testes propostos baseados nas sucesses de Lucas. Ele pode ser considerado anlogo ao resultado de Pocklington citado acima. Este teste se baseia em uma conjectura, a Hiptese Generalizada de Riemann9. Caso ela seja verdadeira, ele no s vlido como tambm um teste de tempo polinomial, Como esta at hoje no foi provada ele no tido como tal. No entanto, h uma forte chance desta conjectura estar correta, dados os estudos que j foram feitos sobre ela.

Segunda forma do No entanto, apesar de ser um teste mais rpido do que o primeiro, ainda

Lucas, nasceu no dia 4 de abril de 1842 em Amiens, Frana. Morreu no dia 3 de outubro de 1891 em Paris, Frana. Ele foi oficial de artilharia durante a guerra Franco-Prussiana (1870-1871). Depois da derrota da Frana, tornou-se professor de matemtica no Liceu Saint Louis em Paris. Lucas se tornou famoso pelos seus estudos em jogos matemticos e em Teoria dos Nmeros. Ele foi o inventor das Torres de Hani. Ele a divulgou em 1883, com o nome de M.Claus. Nota-se que Claus um anagrama de Lucas. Tambm fez quatro volumes intitulados Rcrations mathmatiques (1882-94), com diversos jogos matemticos. Seus estudos em teoria dos nmeros mais famosos foram sobre a sucesso de Fibonacci e as prprias, e sobre o citado Teste de Lucas, para determinao de primalidade.
9

Confira [RIBEMBOIM 2001]

123

(1976) Teste de Miller-Rabin

o primeiro dos testes de primalidade classificado como um Teste de Monte Carlo. Este o teste mais usado hoje em dia. Ele no determina se um nmero ou no primo, mas d uma alta probabilidade de ser. Ele baseado no teste de Miller, citado acima, mas uma pequena modificao faz com que este j no seja determinstico, o que aumenta sua eficincia.

(1977) Teste de Solovay-Strassen (1980) Teste de Baillie-Wagstaff

Este outro teste de Monte Carlo. No entanto, baseado na

reciprocidade quadrtica, e tem uma margem de acerto menor do que


o de Miller-Rabin. Este , na verdade, uma combinao de testes. Ele dispe de vrios passos para determinar a primalidade de um nmero, entre eles est, inclusive, o teste de Miller-Rabin. Com isso, a resposta do teste ainda probabilstica, mas com uma chance maior de estar correto, em vista de uma pequena perda na eficincia.

(1983) Teste APR

Foi um marco importantssimo entre os testes de primalidade. Este foi o primeiro teste determinstico que no exigia conhecimento de fatores primos de N -1 ou N + 1, e por vrios anos foi o teste mais rpido para determinar efetivamente se um nmero ou no primo.

(1986) elpticas ECPP (2003) Algoritmo AKS

Foi outro grande teste de Primalidade. Sua eficincia supera a probabilstica, supera tambm os testes de Monte Carlo. , enfim, um dos resultados mais procurados na teoria dos nmeros. Com este algoritmo, trs Indianos (Manindra Agrawal, Neeraj Kayal, Nitin Saxena) provaram que o problema dos primos pode ser resolvido em tempo polinomial. A publicao de tal algoritmo causou grande estardalhao no mundo matemtico, pois este usa apenas conceitos algbricos do nvel de uma graduao em Matemtica.

Teste com curvas dos testes determinsticos anteriores e, caso seja usado de maneira

124

Um grande passo nos testes foi exatamente a introduo de testes probabilsticos, e no determinsticos. Para a computao, mais propriamente na segurana de dados, isto foi imprescindvel. H vrios mtodos de criptografia que utilizam nmeros primos gigantescos como parmetro. Assim, para obterem-se tais nmeros so necessrios algoritmos confiveis e eficientes.

4.2.

Anlise dos Primeiros Testes Determinsticos


A anlise dos testes ir seguir uma ordem semelhante cronolgica. No entanto, como

alguns testes citados possuem conceitos extremamente semelhantes, ento estes tero uma anlise conjunta. Agora, a anlise dos testes probabilsticos e, por fim, do algoritmo AKS, sero feitas em captulos distintos, pois exigem mais trabalho. Para comear, analisemos o Crivo de Eratstenes e as trs formas do Teste de Lucas.

Algoritmo 5.2.1: (Crivo de Eratstenes)


1. Tome todos os inteiros entre dois e um determinado n (no caso, n a entrada do algoritmo). 2. A partir do 2, risque os nmeros de 2 em 2, isto , riscar o 4, 6, 8, 10, etc... 3. A partir do prximo inteiro x no riscado, risque os nmeros de x em x, isto , 2x, 3x, etc... 4. Repita o passo 3 at que no haja um prximo inteiro a riscar 5. Por fim, todos os inteiros no riscados so primos.

Anlise do algoritmo 5.2.1


A ideia deste algoritmo bastante clara. Atentemos para o seguinte: no passo 2 ns eliminamos todos os mltiplos de 2, menos eles mesmos. Sabemos que 2 primo porque o menor inteiro no unitrio. O prximo nmero no riscado ser 3. Obviamente, 3 primo, pois o nico primo menor do que trs so 2, e 3 no foi riscado no processo anterior. Notemos que o prximo inteiro que no foi riscado com certeza primo, do contrrio ele seria mltiplo de algum primo menor do que ele, o que uma contradio, pois ele no foi riscado. Assim, aplicando esse processo sucessivamente, poderemos determinar, de fato, todos os primos entre 2 e um dado n. Uma maneira de agilizar um pouco este processo , tomando certo primo x, comearmos a eliminar os nmeros a partir de x2. Isso vlido, pois todos os mltiplos de x menores do que x2 125

so, tambm, mltiplos de um primo menor do que x que, de acordo com o processo, j foi eliminado. Com essa observao, podemos parar o algoritmo quando x2 > n. Afinal, queremos determinar todos os primos at n mas, caso x2 > n, tem-se que todos os mltiplos de x entre x e n j foram eliminados, e isso valer para qualquer nmero entre x e n. Portanto, todos os primos entre 1 e n j foram determinados. Para determinar o custo do algoritmo, notemos que, dado um inteiro t menor do que n, existem n t mltiplos de t menores do que n, afinal, t.k n, k { ,2,3,..., n t } . Apesar de ser 1 til comearmos a riscar os mltiplos de t a partir de t2, no iremos adotar esse procedimento, pois a anlise computacional mais simples sem ela. No entanto, ainda seguiremos a determinao de parar o algoritmo quando t2 > n, o que significa que o ltimo nmero que iremos aplicar este processo o maior primo menor do que

n . Alm disso, notemos que a nica

operao que aplicaremos no crivo a soma, pois, j que sempre eliminamos os nmeros de t em

t a partir de t, a nica coisa que precisamos fazer somar t sucessivamente. Assim, com todas
essas observaes, temos que o nmero de operaes efetuadas :
n p pP ( n )

pP

( n) p

n n
pP

( n)

onde P n o conjunto de todos os primos menores do que n. Portanto, o nmero de operaes


3 efetuadas inferior a n n . Como efetuamos apenas somas, o custo total O n 2 log 2 n . Esta

( )

anlise a mesma que encontramos no livro de [COUTINHO 2004], mas, como o prprio autor diz, constata-se que este custo menor por meio de uma anlise mais cuidadosa, no caso,

O(n ln ln n log 2 n ) . No entanto, em ambos os casos, o algoritmo tem custo exponencial. Por fim,
atentemos para outro fator que no analisado neste trabalho: o consumo em memria. Caso este algoritmo seja executado no computador, devemos guardar todos os nmeros entre 1 e n na memria, alm disso, devemos guardar quais nmeros foram eliminados e quais no foram. Portanto, o Crivo de Eratstenes no s tem custo exponencial como pode consumir uma grande quantidade de memria.

126

Teorema 5.2.1: Teste de Lucas

Seja N > 1. Se existe a > 1 tal que: 1. a N 1 1(mod N ) 2. a m 1(mod N ) para todo m { ,..., N 2} 1 / Ento N Primo
Demonstrao:
Evidente, pois as condies acima equivalem a dizer que a uma raiz primitiva de N e que sua ordem N 1, no entanto, isso s pode ser verdade se N for primo.

Corolrio 5.2.1: Segunda forma do Teste de Lucas

Seja N > 1. Se existe a > 1 tal que: 1. a N 1 1(mod N ) ; 2. a m 1(mod N ) para todo divisor m de N 1. Ento N Primo
Demonstrao:
Pela proposio 1.6.2, se am1 (mod N), ento m mltiplo da ordem de a. Portanto, a hiptese 2 suficiente para determinar se existe algum m < N 1 tal que am1 (mod N). Logo, pelo teorema 4.3.1, N primo.

127

Corolrio 5.2.2: Terceira forma do Teste de Lucas

Seja N > 1. Se existe a > 1 tal que: 1. a N 1 1(mod N ) ; 2. a


N 1 q

1(mod N ) para qualquer fator primo q de N - 1. /

Ento N Primo.
Demonstrao:
Pela proposio 1.6.2, se am 1 (mod N), ento m mltiplo da ordem de a. Ento, sabendo que N 1 mltiplo da ordem de a, temos que, pela segunda condio, no existe nenhum m entre um e N 1 tal que am 1 (mod N), donde conclumos que a ordem de a no pode ser menor do que N 1. Pelo teorema 4.3.1, ento, N primo.

Anlise de Custo 5.2.1


Apresentamos os testes anteriores apenas na forma de teorema, pois, nesta forma, j possvel constatar a eficincia de cada um. Primeiramente, analisemos o teorema 5.2.1. Basta atentarmos para a segunda condio que este apresenta. Ela exige N 3 potenciaes mdulo m. Como foi visto no captulo 4, o custo desta operao O log 3 N , logo, o custo desta segunda condio O N log 3 N . Portanto, a 2 2 primeira forma tem custo exponencial. Agora, o grande problema com o corolrio 5.2.1 e corolrio 5.2.2 que as condies destes exigem que se conheam os fatores primos de N 1. Infelizmente, para nmeros arbitrrios j custoso determinar os fatores primos, o que torna estes testes ineficientes. Caso a fatorao no seja necessria, a constatao pode ser diferente. Por exemplo, estes dois testes so especialmente eficientes com nmeros da forma 2 n + 1 , chamados nmeros de

Fermat. Dado N = 2 n + 1 , fcil notar que o nico fator primo de N 1 2. Logo, todo divisor
N de N 1 menor do que ele da forma 2 m ,1 m < n . Ento temos log 2 1 divisores, portanto, o

custo de uma interao seria apenas O log 2 N log 3 N = O log 4 N . Quanto ao corolrio 5.2.2, o 2 2 128

custo ainda menor. Como h apenas um fator primo, ento s precisaramos testar a segunda condio uma vez. O custo de uma interao seria simplesmente O log 3 N , o que um 2 excelente resultado. Mas, notemos que se uma das condies falsa isso no significa que o nmero seja composto. Na verdade, com um nmero primo isto pode acontecer, basta a no ser uma raiz primitiva mdulo N, o que provvel. Portanto, ainda sim teramos que considerar mltiplas interaes. Agora apresentaremos um teste muito semelhante ao de Lucas, conhecido como Critrio

de Proth. Como veremos, ele usado penas em primos de uma forma particular.
Proposio 5.2.1: Primeira forma do resultado de Pocklington

Sejam N 1 = q n R , q primo, n 1 e q / R . Se existe a > 1 tal que: | 12. a N 1 1(mod N ) ;


Nq1 1, N = 1 . 13. MDC a

Ento os fatores primos de N so todos da forma mq n + 1, m 1 .


Demonstrao
Suponhamos
N = p . p1 1 . p 2 2 ... p r r , r 1 e e = ord p a e | p 1 . Pela hiptese 2,

n 1 Nq1 a = 1 , ento a q 1(mod p ) , isto , e / n 1 , donde temos que q / n 1 . MDC 1, p | | / q e

Assim, q / |

q n .R , logo, q n | e , isto , q n .m = e para algum m 1 . No entanto, e | p 1 ento e

q n m | p 1 , isto , q n m. j = p 1 , para algum j > 0. Portanto, p da forma mq n + 1, m 1 .

129

Corolrio 5.2.3: Segunda forma do resultado de Pocklington

Seja N 1 = F.R, MDC( F, R)= 1. Se, para todo fator primo q de F existe a= a(q)>1 tal que: 17. a N 1 1(mod N ) ;
Nq1 18. MDC a 1, N = 1 .

Ento os fatores primos de N so todos da forma mF + 1, m 1 .


Demonstrao
Pela proposio 5.2.1, temos que todo fator primo de N da forma mqini + 1, m 1 , para qualquer q fator primo de N 1. Ento, temos que existem m1 , m2 ,..., mr tal que:
n n m1 q1n1 + 1 = m2 q 2 2 + 1 = ... = mr q rnr + 1 , logo, m1q1n1 = m2 q2 2 = ... = mr qrnr . n Ento, pelo teorema 1.1.1 (TFA): q1n1m1 = q1n1q2 2 ...q rnr m , para algum m > 0; mas ento

q1n1 m1 = Fm , ou seja, q1n1m1 + 1 = Fm + 1 . Portanto, todo fator primo de N da forma


mF + 1, m 1 .

130

Teorema 5.2.2: O critrio de Proth


n n Sejam N = 2 h + 1 , h mpar e 2 > h . N 1 2

Se existe a > 1 tal que a


Demonstrao

1(mod N ) ento N primo.

N 1 2 N 1 = 2 h e a 2 ( 1) (mod N ) a N 1 1(mod N ) .
n

Mas, se a ento a
N 1 2

N 1 2

1(mod N ) ento a

N 1 2

1(mod p ) , para qualquer p fator primo de N,

N 1 N 1 1(mod p ) , donde MDC a 2 1, p = 1 e, por conseguinte, MDC a 2 1, N = 1 . /

Assim, pela proposio 5.2.1, p = 2 n m + 1 > 2 n ; mas, pela hiptese, 2 n > h , ento
2 2 n > 2 n h + 1 = N donde temos que 2 n > N . Assim, temos que p > 2 n > N . Portanto, N

primo.

131

Anlise de Custo 5.2.2


Primeiramente, o grande problema deste teste est na escolha de um a adequado. A condio do teste, por si s, tem custo polinomial, no caso O log 3 n . Ora, pela proposio 1.9.2 2

a (critrio de Euler), se p primo ento ( ) a p


(

p 1 2

mod p . Escolhamos, ento, inteiros a tais que

a ) = 1 . Para tanto, usando as regras apresentadas na seo 4.8, podemos dizer que N

3 + 4n 7 N 1 N mod 3 + 4n = = e tambm: 3 + 4n N 3 + 4n 1 + 4n 6 N 1 N mod1 + 4n n = = para n Z . Ora, N 1 = 2 h , supondo que h e n 1 + 4n N 1 + 4n

sejam conhecidos. Assim, encontrando um inteiro a tal que (

a ) = 1 , pela proposio 2.4.2 N


N 1 2

(critrio de Euler) e pelo prprio teorema 5.2.2 teremos que, caso a

1(mod N ) , ento N

com certeza primo, do contrrio ele composto. Assim, dado que se conhece bem o formato de

N, ento no seria uma tarefa to difcil encontrar tal a, e conhecendo-o, o custo do teste apenas O(log 3 n ) . 2
O teste abaixo utilizado apenas para nmeros de Fermat.

132

Teorema 5.2.3: Teste de Pepin

Sejam Fn = 2 2 + 1 (com n 2 ) e k 2 . Ento, so equivalentes as condies: 1. Fn primo e ( k


Fn 1 2

k ) = 1 Fn

2.

1(mod Fn ) .

Demonstrao:
Suponhamos a afirmao 1 verdadeira. Ento, pelo critrio de Euler para o smbolo de Legrende, k
Fn 1 2

k ) 1(mod Fn ) . Portanto, vale a afirmao 2. Fn


n

Agora, suponhamos que a segunda afirmao verdadeira e, sabendo que Fn = 2 2 .1 + 1 , temos, pelo teorema 5.2.2, que Fn primo ento: k
Fn 1 2

1 (

k )(mod Fn ) . Fn

133

Anlise de Custo 5.2.3


Temos apenas duas operaes neste teste: clculo do Smbolo de Jacobi (custo

O(log 2 n ) )10 e potenciao mdulo m (custo O(log 3 n ) ), ambas tem custo polinomial11. Logo, a 2 2
eficincia deste teste depende agora de uma escolha inteligente de k. Ora, se escolhermos um k tal que (

k ) = 1 , teremos uma grande vantagem, pois caso a segunda condio seja falsa, como se Fn k ) = 1 , Fn , portanto, s Fn

trata de uma equivalncia, logo a primeira tambm falsa. Como (

poder ser composto. Por outro lado, se a segunda condio for verdadeira, ento a primeira tambm . Logo, com certeza Fn ser primo. Assim, usando as relaes j apresentadas na

anlise de custo 5.2.2 e dado que um nmero de Fermat atende ao formato exigido pelo teorema 5.2.2, teremos ( F 1 3 7 2 ) = ( n ) = ( ) = 1. Fn 3 3

No difcil demonstrar que qualquer nmero Fn , n 1 da classe 2 em Z 3 . Podemos citar outros exemplos de valores para k mas, como falamos anteriormente, basta um valor tal que (

k ) = 1 , e j o apresentamos. Portanto, o custo do Teste de Pepin apenas O(log 3 n ) . 2 Fn

10 11

Captulo 4, seo 8. Captulo 4, seo 5.

134

Captulo 6. Nmeros de Mersenne e Teste de Primalidade.


Neste captulo falaremos explicitamente dos nmeros de Mersenne. Exporemos suas relaes bsicas quanto aos nmeros perfeitos, a primalidade e, por fim, abordaremos os teoremas baseados em Sucesses de Lucas utilizados nos Testes de Primalidade mais eficientes para estes nmeros.

6.1. Origem e relaes bsicas dos Nmeros de Mersenne.


Como j foi citado no captulo 3, chamamos de nmeros de Mersenne todo nmero

M a IN tal que M a = 2 a 1, a IN . Esta denominao devida ao trabalho de um matemtico


do sculo XVII, Marin Mersenne. Tratava-se de um frei franciscano da Frana, que viveu de 1588 a 1648 e que manteve correspondncias com vrios matemticos da poca. Sua constante comunicao foi, inclusive, muito benfica para o desenvolvimento dos trabalhos daquele tempo. Em 1640 o frei divulgou aos seus companheiros de correspondncia uma surpreendente lista de nmeros primos. Uma das discusses importante na poca era exatamente maneiras rpidas de determinar se nmeros de grandeza considervel eram ou no primos, e a lista que Mersenne divulgou continha primos bem extensos. Eis, ento, a lista de nmeros que o frei afirmou serem primos: M 13 , M 19 , M 31 , M 67 , M 127 , M 257 . A afirmao continha, na verdade, alguns equvocos. A comear, M 67 e M 257 no so primos e nesta lista ainda poderiam ser inclusos

M 61 , M 89 e M 107 para completar a lista de primos de Mersenne com expoente menor ou igual a
257. Apesar dos nmeros com esta forma particular serem chamados nmeros de Mersenne, existem estudos bem mais antigos sobre eles. Foi na Grcia Antiga que os primeiros resultados envolvendo nmeros de Mersenne apareceram.

135

Definio 6.1.1. (Nmeros Perfeitos)

Seja n IN . Dizemos que n um nmero perfeito se 2n = metade da soma de todos os seus divisores positivos.

d , isto , se n igual
d |n , dIN

Com o prximo teorema veremos, ento, o primeiro momento da histria em que os nmeros de Mersenne aparecem e, mais do que isso, em que os testes de primalidade para estes nmeros ganham relevncia.

Teorema 6.1.1. Seja n IN par. n um nmero perfeito se, e s se, n = 2 k 1 2 k 1 para algum

k IN , k 2 e 2 k 1 primo.
Demonstrao
Suponhamos n = 2 k 1 2 k 1 para algum k IN e que 2 k 1 seja primo. Ento,

d = d
d |n

d |2 k 1 2 k 1

d |2 k 1

ed = d e = (1 + 2 + 4 + ... + 2 )(1 + 2
k 1

e|(2k 1)

d |2 k 1 e| 2 k 1

1 . Notemos que esta

ltima igualdade obtida, pois 2 k 1 primo, logo, seus nicos divisores so 1 e ele mesmo. Mas, ento,
2 2 k 1 1 k d = 2 1 2 = 2 k 1 2 k , isto , d |n

d = 2n .
d |n

Reciprocamente, suponhamos que n seja um nmero perfeito. Como n par, podemos dizer que n = 2 k 1 m para algum k , m IN , k 2 e m mpar. Como n perfeito, ento 2n = 2 k m = d =
d |n

d e = (2
d |2
k 1

1 e ,
e|m

donde

conclumos

que

2k 1 | 2k m .

Como

e|m

MDC (2 k 1,2 k ) = 1 , ento 2 k 1 | m . Assim, existe um x IN tal que m = (2 k 1)x . Logo,


2k 2k 1 x = 2k m = 2k 1 e ,
e|m

isto

2k x = e m + x .
e|m

Mas

m = 2k 1 x ,

ento

m + x = (2 k 1)x + x = 2 k x , donde temos que 2 k x = e m + x = 2 k x . Logo,


e|m

e = m + x .
e|m

Disso, conclumos que m e x so os nicos divisores de m, donde x s pode ser igual a 1. Portanto, n = 2 k 1 2 k 1 e m = 2 k 1 primo. 136

A primeira parte dessa demonstrao atribuda a Euclides, enquanto a segunda devida a Euler. A questo que, com este teorema, a busca por nmeros perfeitos fica resumida a um nico problema: determinar se M k = 2 k 1 ou no primo. Notemos tambm que o teorema assume que n par. De fato, no se sabe se existe algum nmero perfeito mpar, sendo este um dos grandes problemas em aberto da Teoria de Nmeros. Quanto primalidade dos nmeros de Mersenne, o resultado mais simples sobre isso expresso pelo prximo teorema.

Teorema 6.1.2. Sejam 2 a, k IN . Se a k 1 for primo, ento a = 2 e k primo. Demonstrao


Dividindo a k 1 por a 1 temos a k 1 = (a 1)m , onde m = 1 + a + a 2 + ... + a k 1 . Mas
m > 1 , pois k > 1 , logo, como a k 1 primo, temos que a 1 = 1 , isto , a = 2 .

Para provarmos a primalidade de k, suponhamos que k seja composto. Ento, existem


1 < r , s IN tal que k = r s . Assim, se b = a r ento a k 1 = b s 1 . Dividindo b s 1 por b 1

temos b s 1 = (b 1)m' , onde m' = 1 + b + b 2 + ... + b s 1 . Mas b = 2 r > 2 j que a = 2 . Logo,


b 1 > 1 , donde conclumos que b s 1 = a k 1 composto, o que uma contradio.

Portanto, se a k 1 primo ento a = 2 e k primo. Devido a este resultado temos que, se M k = 2 k 1 primo, ento k primo. Todavia, a recproca dessa afirmao no verdade. Um exemplo disso M 11 . Notemos que

M 11 = 211 1 = 23 89 . Mesmo assim, este resultado limita a busca por primos de Mersenne
apenas para os nmeros M k = 2 k 1 tal que k primo.

6.2.

Testes de Primalidade envolvendo Sucesses de Lucas.


Nesta seo estudaremos testes de primalidade que se baseiam na teoria estudada no

captulo anterior, as sucesses de Lucas. Vale ressaltar que estes testes so eficientes para 137

nmeros N tal que os fatores de N + 1 so facilmente detectveis, como o caso dos nmeros de Mersenne. Para simplificar as prximas demonstraes, faremos uma definio semelhante da funo , Alm disso, toda vez que nos referirmos a alguma propriedade sem discriminar captulo e seo, estamos falando das propriedades sobre sucesses de Lucas, apresentadas no

captulo 3.
s

Definio 6.2.1. Seja N = pi


i =1

e(i )

um inteiro, pi primo e pi p j se i j , e 1 < D Z .


1 2
s 1

Ento, definimos a funo D tal que D ( N ) =

p
i =1

e ( i ) 1 i

D pi ( ) . pi

Notemos que , ( N ) = 2 s 1 D ( N ) . Os prximos resultados so relevantes para os testes de primalidade baseados em Sucesses de Lucas.

Proposio 6.2.1. Seja N , D Z tal que N seja mpar e MDC ( N , D ) = 1 . Dessa forma,

D (N ) = N ( ) se, e s se, N primo.

D N

Demonstrao

D Se N = p primo, ento D ( N ) = p ( ) pela prpria definio da funo. Se N for p


composto, todavia, temos alguns possveis casos:

N = p e , e > 1 : Neste caso, p | D ( N ) , mas p / N ( |


s

D D ) , j que ( ) 0 ; N N

N = pi
i =1

e(i )

, s > 1 : Neste caso, D ( N ) Mas

1 2
s 1

(p
i =1

e ( i ) 1 i

( pi + 1)) que, por sua vez, igual


donde temos que

s 1 1 2 N 1 + . pi i =1 2

1 1 p +1 1 + = i , 2 pi 2 pi

138

s 1 1 4 6 4N 2 N 1 + 2 N = . Mas N divisvel por mais de um primo, isto , pi 6 10 5 i =1 2

s > 1 , donde podemos afirmar que N > 5 . Assim, temos que

4N D < N 1 N ( ) . 5 N

Proposio 6.2.2. Se N mpar, MDC ( N , D ) = 1 e N ( Demonstrao


Suponhamos que N seja composto. Ento:

D ) | D ( N ) ento N primo. N

D D Se N = p e , e > 1 , temos que D ( N ) = p e p e 1 ( ) . Como N ( ) | D ( N ) ento p N N ( D D D ) D ( N ) , donde temos que ( ) s pode ser 1. Mas N ( ) = p e 1 divide N p N p e 1 | p e 1 , mas

D (N ) = p e 1 + p e1 m 1 , o que uma contradio, pois


p e 1 / p e 1 m 1 ; |
s

Se N = p i
i =1

e(i )

, s > 1 , pela proposio 6.2.1. D ( N ) < N (

D ) , o que contraria a N

hiptese. Dessa forma, vemos que N obrigatoriamente primo.

Proposio 6.2.3. Se N mpar, U = U (P, Q ) uma Sucesso de Lucas de discriminante D e

MDC ( N , QD ) = 1 , ento N divide U , onde = D ( N ) .


Demonstrao
Pela propriedade 21 das sucesses de Lucas, como MDC ( N , Q ) = 1 , temos que
1 D D N | U , = , ( N ) . Mas = MMC p e ( p ) 1 p ( ) = 2 MMC p e ( p ) 1 p ( ) , onde p| N p| N p p 2

e( p )

indica

mximo

expoente

tal

que

p e( p )

divida

N;

conclumos

que

1 D | 2 p e ( p )1 p ( ) = D ( N ) . Assim, pela propriedade 15, U | U , logo, N | U . p p| N 2

139

Proposio 6.2.4. Se N mpar e U = U (P, Q ) uma Sucesso de Lucas de discriminante D tal

que (

D ) = 1 e se N divide U N +1 , ento MDC ( N , QD ) = 1 . N

Demonstrao
Se MDC ( N , D ) = 1 o resultado trivial, pois (

D ) 0 . Suponhamos, ento, que existe N

um fator primo p de N tal que p | Q . Como p / D = P 2 4Q , ento p / P . Dessa forma, pela | |

propriedade 18 das sucesses de Lucas, p / U n para todo n 1 , o que uma contradio, pois | p | N , donde p | U N +1 . Portanto, MDC ( N , Q ) = 1 .
Proposio 6.2.5. Sejam N mpar, q um fator primo de N + 1 e U = U (P, Q ), V = V (P, Q )

Sucesses de Lucas de discriminante D. Se:


MDC (P, Q ) = 1 ou MDC ( N , Q ) = 1 ; N | U ( N +1) q e N | V( N +1) 2 .

Ento N | V( N +1) 2 q .
Demonstrao
Notemos que

N +1 N +1 N +1 q 1 . Pela propriedade 4 das Sucesses = + u com u = 2 2q q 2

de Lucas, temos que 2V( N +1) 2 = V( N +1) 2qVu ( N +1) q + DU ( N +1) 2qU u ( N +1) q e, pela propriedade 15, temos que N | U u ( N +1) q , donde N | V( N +1) 2qVu ( N +1) q . Caso MDC (P, Q ) = 1 ento, pela propriedade 21, temos que MDC (U u ( N +1) q ,Vu( N +1) q ) { ,2} , donde MDC (N ,Vu ( N +1) q ) = 1 , j que N mpar e divide 1
U u ( N +1) q e, portanto, N | V( N +1) 2 q .

Caso MDC ( N , Q ) = 1 , suponhamos que exista um fator primo p de N tal que p | Vu ( N +1) 2 q .
Neste caso notemos que, pela propriedade 6, (Vm ) = D(U m ) + Q n 1 onde m = u N + 1 2q .

140

Dessa forma, como p | V( N +1) 2 q , temos que p | Q o que contraria a hiptese. Assim, tambm neste caso temos que MDC (N , Vu ( N +1) q ) = 1 e, portanto, N | V( N +1) 2 q . Iremos, agora, enunciar os teoremas referentes aos testes de primalidade baseados em Sucesses de Lucas12.
s

Teorema 6.2.1. Sejam N um inteiro positivo mpar tal que N + 1 = q i


i =1

f (i )

, qi primo para todo

i IN . Se:

Existir um inteiro D tal que (

D ) = 1 ; N

Para todo fator primo qi de N + 1 existir uma sucesso de Lucas U n (Pi , Qi ) de discriminante D tal que MDC (Pi , Qi ) = 1 ou MDC ( N , Qi ) = 1 ;

N | U N +1 (Pi , Qi ) , mas N / U ( N +1) q (Pi , Qi ) | i

Ento N primo.
Demonstrao
Tomemos i inteiro tal que 1 i s e U = U (Pi , Qi ) . Pela proposio 6.2.4, temos que

MDC ( N , DQi ) = 1 . Dessa forma, pela proposio 6.2.3, N | U

D (N )

. Tomemos, ento, i ( N ) o

menor inteiro r tal que N | U r . Pela propriedade 29 das sucesses de Lucas, temos que N | U k se e s se i ( N ) | k para k IN . Dessa forma, temos que i ( N ) | N + 1 , i ( N ) / |

N +1 e qi

i ( N ) / D ( N ) . Ento, temos que q j f ( j ) | i ( N ) para todo fator primo q j de N + 1. Logo, |


N + 1 | i ( N ) e, por conseguinte, N + 1 | D (N ) . Portanto, pela proposio 2, N primo.
Como se pode ver pelo teorema, este primeiro teste funcional, mas no muito eficiente. De fato, ele exige dois requisitos que em muitos casos custoso:

12

Resultados encontrados em [RIBEMBOIM 2001]

141

O conhecimento de todos os fatores primos de N + 1 o que, em se tratando de nmeros de Mersenne, no grande problema; O clculo de U n (Pi , Qi ) para n { ,2,..., N + 1} , o que j apresenta um grande 1 trabalho computacional.

O nmero de clculos necessrio para o prximo teste a metade do anterior, o que ainda um problema.
s

Teorema 6.2.2. Seja N um inteiro positivo mpar tal que N + 1 = q i


i =1

f (i )

, qi primo para todo

i IN . Se:

Existir um inteiro D tal que (

D ) = 1 ; N

Para todo fator primo qi de N + 1 existir uma sucesso de Lucas Vn (Pi , Qi ) de discriminante D tal que MDC (Pi , Qi ) = 1 ou MDC ( N , Qi ) = 1 ;

N | V( N +1) 2 (Pi , Qi ) , mas N / V( N +1) 2 q (Pi , Qi ) | i

Ento N primo.
Demonstrao
Sejam i { ,2,.., s} , U = U (Pi , Qi ) e V = V (Pi , Qi ) . Pela propriedade 2 das sucesses de 1 Lucas, U k = U k 2Vk 2 , donde, como N | V( N +1) 2 , temos que N | U N +1 . Assim, pela proposio

6.2.4, temos MDC ( N , DQi ) = 1 . Pela proposio 6.2.5, como N / V( N +1) 2 q , ento N / U ( N +1) q ou | | i N / V( N +1) 2 , mas N | V( N +1) 2 , logo, N / U ( N +1) q . Portanto, pelo teorema 6.2.1, N primo. | |
Para o prximo e mais eficiente teste, necessrio enunciar mais dois resultados preliminares.

142

Proposio 6.2.6. Seja N > 1 um inteiro mpar N + 1 = F R, F , R IN , tal que MDC (F , R ) = 1

e a fatorao de F conhecida. Se:

para cada qi fator primo de F existir uma sucesso de Lucas i U = U (Pi , Qi ) de discriminante D tal que ( D ) = 1 ; N

MDC (Pi , Qi ) = 1 ou MDC ( N , Qi ) = 1 para todo i IN ; N |i U N +1 , mas MDC N , i U ( N +1) q = 1 ;


i

D Ento cada fator primo de N satisfaz a congruncia p ( )(mod F ) . p


Demonstrao
Seja i ( N ) o menor inteiro r tal que N | U r . De maneira semelhante feita na demonstrao do teorema 6.2.1, podemos concluir que i ( N )|i U N +1 . Em particular, i ( p )|i U N +1 , onde p um fator primo de N. Como p / i U ( N +1) q , j que MDC N , i U ( N +1) q = 1 , ento |
i i

i ( p) / |
qi
f (i )

U N +1 f (i ) , pela propriedade 29. Sendo qi a maior potncia de qi que divide F, ento qi


f (i )

| i ( p ) , donde qi

D D | p ( ) e, por conseguinte, F | p ( ) . p p

Proposio 6.2.7. Seja N > 1 um inteiro mpar N + 1 = F R, F , R IN , tal que MDC (F , R ) = 1

e a fatorao de F conhecida. Se existir uma sucesso de Lucas U = U (P, Q ) de discriminante D tal que ( D ) = 1 , N | U N +1 e MDC (U F , N ) = 1 , ento, para um fator primo p de N, existe um N

D fator primo q de R tal que p ( )(mod q ) . p

143

Demonstrao
Seja i ( p ) o menor inteiro r tal que p | U r . Pela propriedade 18 das sucesses de Lucas,

( p) | N + 1.

Todavia,

como

MDC (U F , N ) = 1 ,

ento

( p) / F |

Dessa

maneira,

MDC (R, ( p )) > 1 , isto , existe um fator primo q de R tal que q | ( p ) e, por conseguinte, D p ( )(mod q ) . p
Teorema 6.2.3. Seja N > 1 um inteiro mpar e N + 1 = F R, F , R IN , tal que MDC (F , R ) = 1

e a fatorao de F conhecida e R no tem nenhum fator primo menor do que B, onde BF > N + 1 . Se existir D tal que (

D ) = 1 e que as seguintes condies sejam satisfeitas: N

Para todo fator primo q de F, existe uma sucesso de Lucas U = U (P, Q ) de discriminante D e MDC (P, Q ) = 1 ou MDC ( N , Q ) = 1 tal que N | U N +1 e MDC N ,U ( N +1) q = 1 ;
i

Existe uma sucesso de Lucas

U ' = U ( P ' , Q ')

de discriminante D e

MDC (P' , Q') = 1 ou MDC ( N , Q') = 1 tal que N | U ' N +1 e MDC ( N , U F ) = 1 . Ento N primo.
Demonstrao

D Tomemos p fator primo de N. Pela proposio 6.2.6, p ( )(mod F ) e, pela proposio p D D 6.2.7, existe um fator primo q de R tal que p ( )(mod q ) . Ento, p ( )(mod qF ) e, por p p D conseguinte, p + 1 p ( ) qF BF > N + 1 , donde conclumos que p > N . Mas p um p
fator primo qualquer de N; logo, N s pode ser primo. Este teste o mais eficiente dentre os desenvolvidos com sucesses de Lucas, pois ele exige apenas uma fatorao parcial de N: basta garantir que a parte subjacente da fatorao no 144

tenha fatores primos maiores do que B, onde BF > N + 1 , sendo F a parte fatorada. Notemos que, caso N seja um primo de Mersenne tal que N = 2 a 1 , ento F = 2 a e B = 1 , ou seja, no necessria a fatorao. Veremos, agora, um teste de primalidade especfico para nmeros de Mersenne. De fato, este o teste mais eficiente para tal tipo de nmero que se tem notcia13 e, inclusive, Lucas, em 1827, o utilizou para mostrar que M 127 primo. Este nmero tem 39 algarismos e, at o advento da Informtica, foi o maior nmero primo conhecido.

Teorema 6.2.4. (Teste de Primalidade para Nmeros de Mersenne):

Sejam P = 2 e Q = 2 e consideremos a sucesso de Lucas V = V (P, Q ) de discriminante D = 12. Ento N = M n primo se, e s se, N | V( N +1) 2 .
Demonstrao
Para a demonstrao, consideremos tambm a sucesso U = U (P, Q ) . Suponhamos que N seja primo. Ento, pela propriedade 2 das sucesses de Lucas: 2 ) V N +1 + 4(mod N ) N

V( N +1) 2 = V N +1 + 2Q ( N +1) 2 = V N +1 4( 2 )
pois

( N +1) 2

V N +1 4( (

N 3(mod 4 ) ,

N 7(mod 8)

e,

ento,

2 1 2 ) = ( )( ) = 1 N N N

(Leis

da

Reciprocidade Quadrtica). Dessa forma, se provarmos que V N +1 4(mod N ) , ento


N | V( N +1) 2 . De fato, pela propriedade 4, 2V N +1 V N V1 + DU N U 1 = 2V N + 12U N e, pelas

propriedades 14 e 13: V N +1 = V N + 6U N 2 + 6(
12 ) 2 6 4(mod N ) N

Reciprocamente, suponhamos que N | V( N +1) 2 . Neste caso, pela propriedade 2, N | U N +1 . Por conseguinte, pela propriedade 6, temos que V( N +1) 2 12U ( N +1) 2
2 2

igual a 4( 1)

( N +1) 2

onde MDC (N , U ( N +1) 2 ) = 1 . Dessa forma, como MDC ( N ,2 ) = 1 , pelo teorema 6.2.1, temos que N primo.
13

Ao menos at 2001, onde esta afirmao foi feita em [RIBEMBOIM 2001, p. 70]

145

Podemos melhorar este teste apenas substituindo a Sucesso de Lucas pela seguinte: S n , onde S 0 = 4 e S k = (S k ) 2 para 0 < k IN . Dessa forma, podemos obter um teorema equivalente de clculo bem mais simples.
2

Corolrio 6.2.1. (Teste de Primalidade para Nmeros de Mersenne 2):

Sejam M n um nmero de Mersenne e S n um sucesso tal que S 0 = 4 e S k = (S k ) 2 para 0 < k IN . Temos que M n primo se, e s se, M n | S n 2 .
Demonstrao
Consideremos a sucesso de Lucas V = V (2,2) e notemos que S 0 = 4 = Suponhamos, ento, que S k 1 = temos que
2

V2 . 2

V
2

2k

2 k 1

para k 0 e provemos para k + 1. Pela definio de S k , por hiptese de induo, temos que

S k = (S k 1 ) 2 .

Assim,

Vk S k = 2 1 2k 2
V = V

V 2 = 2k 2 . Pela propriedade 2 das sucesses de Lucas, temos que k 1 22


2

( )

22 k

( )
2k

2Q

2k

( )
2k

=V
2 k +1 2k

2 k +1

+ 22

2k

=V

2 k +1

+2

2 k +1

logo,

Sk =

2 k +1

+ 22
2k

k +1

2 V 2
2k

2,

donde S k = V = 22
2n k 1

2 k +1 2k

+22 =

. Portanto, para qualquer k IN , S k 1 =

2k 1

, isto ,

2k

S k 1 . Portanto, pelo teorema 6.2.4, temos que M n primo se, e s se,


n 1

Mn |V

= 22

S n 1 . Como M n mpar, MDC M n ,2 2

n 1

) = 1 , logo, M

primo e, e s se,

M n | S n 1 . Notemos que estes ltimos dois testes sugerem um forte resultado: basta testar uma nica diviso para constatar se dado nmero de Mersenne, independente de seu tamanho, primo. O empecilho est em calcular a sucesso com a qual a diviso ser testada. Para
146

enxergarmos que esta uma tarefa muito rpida, atentemos para a sucesso sugerida no corolrio 6.2.1: S 0 = 4 e S k = (S k ) 2 . Caso queiramos testar a primalidade de M n , basta verificar se este nmero divide S n 2 . Pela definio de M n , n aproximadamente log 2 M n , que , aproximadamente, o nmero de quadrados a se calcular at encontrar S n 2 . Todavia, queremos testar apenas a divisibilidade por M n , donde podemos calcular todos esses quadrados em mdulo M n . Assim, o nmero a ser elevado segunda potncia nunca ser maior do que M n , donde podemos concluir que o custo desta operao O(log 3 M n ) . 2 Levando em conta que este um teste determinstico, no h resultado mais satisfatrio neste trabalho. O grande problema que este teste s funciona para nmeros de Mersenne.
2

6.3.

O Projeto GIMPS.
Para finalizar este captulo, falaremos brevemente de um projeto criado especialmente

para encontrar nmeros primos de Mersenne gigantescos, o Great Internet Mersenne Primes Search (GIMPS). O site deste projeto [GIMPS 2008] e sua proposta interessante: quem quiser participar dessa procura pode baixar um aplicativo de l. Este aplicativo receber uma faixa de nmeros de Mersenne para verificar a primalidade e, no tempo ocioso, o computador ir executar os testes para verificar se algum nmero dessa faixa primo, e os resultados obtidos so enviados de volta ao site do projeto. At a finalizao deste trabalho, o site j havia encontrado o quadragsimo quarto nmero primo de Mersenne, o qual tem impressionantes 9.808.358 algarismos. O nmero em questo M 32.582.657 e, em um arquivo texto, este nmero ocupa 9,4 megabytes. De certa forma, parece uma excentricidade a busca por nmeros to grandes e, na verdade, no deixa de ser mesmo. Todavia, como bem citado no site, a Eletric Frontier Foundation oferece uma recompensa de cem mil dlares para aquele que descobrir o primeiro primo com mais de dez milhes de algarismos. Evidentemente, se essa descoberta for decorrente da participao no projeto GIMPS, o prmio ser dividido com o projeto. Ao menos com essa recompensa, a busca por primos to grandes no algo to excntrico assim.

147

Captulo 7. O Teste de Miller Rabin


Neste captulo discutiremos o teste de Miller-Rabin. Este teste est numa categoria denominada testes de Monte Carlo. De forma geral, podemos dizer que eles se caracterizam por serem probabilsticos, iterativos e terem uma margem de erro menor do que 1 para cada 2

iterao. Assim, se um teste feito com k iteraes, caso seja bem sucedido, ter uma margem de erro de 1 . Analisemos, ento, o teste de Miller-Rabin, um dos mais utilizados hoje em dia para 2k

nmeros arbitrrios.

5.1.

Teorema de Miller-Rabin
Para falarmos do funcionamento deste teste, enunciemos uma proposio importante que,

na verdade, a prpria condio a ser testada no processo.


Proposio 5.1.1: Seja N = 2 r .d + 1 , sendo d um inteiro positivo mpar e r 1 .

Se para algum a, 1 < a < N 1 , tivermos a N 1 1(mod N ) ou 1 < MDC (a 2 / sendo 0 E < r , ento N composto.

.d

1, N ) < N

evidente a validade desta proposio, pois, se N fosse primo, pelo teorema 1.2.1 (teorema de Fermat) a N 1 1(mod N ) e MDC ( , N ) { , N }, para qualquer inteiro. 1
Definio 5.1.1: Seja N um inteiro mpar maior do que 9. Chamamos de testemunha contra a primalidade de N ou simplesmente de testemunha de N, todo a, 1 < a < N 1 , tal que as

hipteses da proposio 5.1.1 sejam verdadeiras. Caso contrrio, dizemos que N um


pseudoprimo forte na base a

148

Lema 5.1.1: Sejam N > 1 mpar e d > 0, E > 0

Se a 2

.d

1(mod N ) ento MDC a 2 .d 1, N = 1, : 0 E

Demonstrao:

Por hiptese, a 2

.d

1(mod N ) ento N | a 2

+1 p | a2

+ 1 , para qualquer fator +1 p / a2 |


E

primo p de N. Como N mpar, ento p > 2 . Logo, se p | a 2 MDC (a 2


E

1 . Isto ,

1, p ) = 1 o que implica que MDC (a 2

1, N ) = 1 .

Ora, mas isso o mesmo que dizer que MDC a 2 MDC a 2

((

E 1

.d

1 . a2

)(

E 1

.d

+ 1 , N = 1 , ento

) )

E 1

.d

1, N = 1 . Analogamente, MDC a 2

1, N = 1, : 0 < E 1

Portanto, MDC a 2

1, N = 1, : 0 E .

Agora, podemos enunciar a proposio 5.1.1 de outra maneira. Para tanto, provemos a seguinte equivalncia:
Proposio 5.1.2: Sejam N > 1 mpar, N = 2 r .d + 1, r 1 , d mpar, e a, 1 < a < N 1 .

So equivalentes as afirmaes: (i) ( ii ) a N 1 1(mod N ) ou 1 < MDC (a 2 /


c E

.d

1, N ) < N para algum 0 E < r e

a d 1(mod N ) e a 2 .d 1(mod N ) , para todo c, 0 c < r . / /

Demonstrao

Primeira Parte: Seja verdadeira a condio ( i ). Note que ela implica claramente que N composto. Suponhamos a N 1 1(mod N ) ento, a d 1(mod N ) e a 2 .d 1(mod N ) para todo / / /
c, 0 c < r , seno isso implicaria que a 2
r c

1(mod N ) a N 1 1(mod N ) , o que uma

contradio.

149

Agora, suponhamos a N 1 1(mod N ) . Logo, 1 < MDC (a 2

.d

1, N ) < N para algum

0 E < r . Caso a d 1(mod N ) ento a d . 1(mod N ) para qualquer > 0 . Mas isso implicaria

que MDC (a 2

.d

1, N ) = N para todo E, o que uma contradio.


E

Agora, faamos a verificao das incongruncias a 2

.d

1(mod N ) . /
E

Suponhamos, por contradio, que para algum E , 0 E < r vale a 2 Ento, para todo > E , a 2 .d 1(mod N ) MDC a 2 .d 1, N = N . Alm disso, pelo lema 5.1.1, MDC a 2 Ou seja, MDC a 2

.d

1(mod N ) .

.d

1, N = 1, 0 E ,

.d

1, N { , N }, E ,0 E < r , o que contradiz a hiptese. 1


c

Logo, para todo c, 0 c < r , a 2 .d 1(mod N ) . / Segunda Parte: (Recproca) Seja verdadeira a condio ( ii ): a d 1(mod N ) e a 2 /
C

.d

1(mod N ) , para todo c, 0 c < r . /

Como a d 1(mod N ) N / a d 1 MDC a d 1, N < N . | / Suponhamos, que no exista um a0 que uma raiz quadrada de 1 mdulo N, 1 < a0 < N 1 , tal que a0 a 2 .d (mod N ) , para algum : 0 < r . Como a d 1(mod N ) e / a2
C

.d

2 .d 1(mod N ) , mas isto o mesmo que dizer / 1(mod N ) , ento, consequentemente, a /

a N 1 1(mod N ) . Agora, suponhamos que exista este a0 , temos, ento, a0 2 1(mod N ) , assim, / MDC a0 1, N = N MDC ((a0 1)(a0 + 1), N ) = N . Mas sabemos que: . 1 < a0 < N 1 a0 1(mod N ) e a0 1(mod N ) , / / isto , MDC (a0 1, N ) < N e MDC (a0 + 1, N ) < N . Ou seja, MDC (a0 1, N ) > 1 . Logo,

1 < MDC (a0 1, N ) < N , mas isto o mesmo que 1 < MDC a 2 .d 1, N < N . Portanto, a N 1 1(mod N ) ou 1 < MDC (a 2 /
E

.d

1, N ) < N para algum 0 E < r .

150

Determinamos, ento, duas maneiras de definir uma testemunha forte de N. Notemos que na primeira forma mais simples constatar que N composto, mas para a demonstrao usaremos a segunda maneira, que oferece uma ligao mais direta com os princpios regidos. Eis, ento, finalmente o enunciado do teste:
Teorema 5.1.1: Teste de Miller-Rabin

Dado N = 2 r .d + 1 , d mpar e r 1 . Sejam feitas k 1 escolhas aleatrias de nmeros a,


2 a N 2 . Se nenhum a for testemunha de N, ento N

tem 1

1 chance de ser primo. 4k

Caso contrrio, N composto. Pela proposio 5.1.1, se algum a for testemunha de N ento N composto. A grande questo ento, provar a margem de acerto. Isso exigir um pouco de trabalho. A fim de simplificar as prximas demonstraes, estabeleceremos a seguinte notao: 1) N = 2 r .u + 1 , u mpar e r > 0; 2) v(n ) a maior potncia de 2 tal que 2 v (n ) | p 1 , para qualquer p fator primo de N;

Lema 5.1.2: Sejam f : Z a Z satisfazendo f (x ) 1 mod pi

(i )

), 1 i w

para x Z com

primos pi p j se i j , s (i ) o nmero de solues no congruentes para f (x ) 1 mod pi


w

(i )

)e

N = pi
i =1

(i )

. Ento, o nmero de solues para f (x ) 1(mod N ) S ( N ) = s (i ) .


i =1

Demonstrao:

Tomemos o conjunto de solues no congruentes para pi Temos ento: f (1 a j (1) ) 1 mod p1


2 j 2

(i )

como

{a,
i 1

a2 ,..., i a s (i ) }.

() ( ) ( ) ) f ( a ( ) ) 1(mod p
1 2
2

... f ( w a j ( w ) ) 1 mod p w

(w )

)
151

Pelo teorema 1.3.4 (teorema chins dos restos), existe um nico a, 1 a < N para cada
i

a j , 1 j s (i ) tal que f (a ) 1(mod N ) . Teremos, assim, uma soluo para cada um dos s(i )

sistemas, ou seja, temos s (i ) solues. Temos, assim, que o nmero de solues possveis para f (a ) 1(mod N ) S (N ) = s(i ) .
i =1 w

Lema 5.1.3: Se N um pseudoprimo forte na base a, ento a u .2

v (n )1

1(mod N ) .

Demonstrao:

Se a u 1(mod N ) , a congruncia evidente. Por isso, analisemos para a u 1(mod N ) . / Ento,


i

como

n
i +1

um

pseudoprimo

forte

na

base

a,

para

algum

i,

a u .2 1(mod N ) a u.2 1(mod N ) .


| Seja k = ord p a , p um fator primo de N. Ento k | u.2 i +1 e k / u.2 i . Assim, a exata fatorao de 2 em k deve ser 2 i +1 . Mas k | p 1 e ento 2 i +1 | p 1 . Sabendo que isso vale para qualquer fator primo de N, ento i +1 v(n ) . Portanto, se i +1 < v(n ) , ento a u .2 se i +1 = v(n ) , a u .2
v ( n )1 v ( n )1

1(mod N ) e

1(mod N ) .

Lema

5.1.4:

Sejam
v ( n )1

w(N )

nmero

de

fatores

primos

distintos

de

S ( N ) = a mod N : a u .2

1(mod n ) um conjunto que contenha todas as bases que possuem


w

pseudoprimos de N. Com isso, temos: S ( N ) = 2.2 (v ( N )1).w( N ) MDC(t , pi 1) .


i =1

Demonstrao:
j Seja m = 2 v ( N ) 1 u , e seja a fatorao em primos de N = p1j1 . p 2j2 ... p ww , onde w = w( N ) .

Temos, ento, a m 1(mod N ) se, e somente se, a m 1 mod piji , para i,1 i w .

152

Por conseguinte, pelo corolrio 1.7.3, o nmero de solues para a m 1 mod p j s = MDC m, p j . Como s | N 1 j que a n 1 1 mod p j , ento temos que e, assim: MDC m, p j = MDC 2 v ( N )1.u , p j 1 .( p 1) =
v ( N ) 1 v ( N ) 1

( ))

( ) MDC (m, p ) = 1
j 1

( ( )) ( MDC (2 .u, p 1) = 2
w

.MDC (u , p 1)

Pelo lema 5.1.2, temos ento que para a m 1(mod N ) o nmero de solues :

2 v( N )1.MDC (u, pi 1) = 2(v ( N )1).w MDC (u, pi 1)


i =1 i =1

Agora, verifiquemos as solues para a m 1 mod p j . Como p primo, esta congruncia ser verdadeira se, e somente se, a 2 m 1 mod p j e a m 1 mod p j . Analogamente / ao processo anterior, como 2 v ( N ) divide p 1, temos que o nmero de solues para a 2 m 1 mod p j 2 v ( N ).MDC (t , p 1) . Assim, o nmero de solues para a m 1 mod p j : / 2 v ( N ).MDC (u , p 1) 2 v ( N )1.MDC (u, p 1) = 2 v ( N ) 1.MDC (u , p 1) Portanto, S ( N ) = 2.2 (v ( N )1).w( N ) MDC (u, pi 1) .
i =1 w

Lema 5.1.5: Se N = p.q, p > q > 2 com p e q primos, ento que p 1 / N 1 . | Demonstrao:

N = p.q N = ( p 1).q + q N q = ( p 1).q . Com isso, p 1 | N q p 1 | ( N 1) (q 1) . Por conseguinte, podemos concluir que: p 1 | N 1 e p 1 | q 1 , ou
p 1 / N 1e p 1 / q 1 . | |

Mas p > q p 1 > q 1 , ou seja p 1 / q 1 . | Portanto, p 1 / N 1 . |

153

Lema 5.1.6: Se N = p.q, p > q > 2 com p e q primos, ento, a maior potncia de 2 que divide

p 1 e q 1 tambm divide N 1 .

Demonstrao:

Seja N = 2 r .u + 1, p = 2 r1 .u1 + 1, q = 2 r2 .u 2 + 1 , sendo u, u1 , u 2 mpares. Temos N = p.q 2 r .u + 1 = 2 r1 .u1 + 1 . 2 r2 .u 2 + 1 , logo: 2 r .u + 1 = 2 r1 + r2 .u1 .u 2 + 2 r1 .u1 + 2 r2 .u 2 + 1 . Assim, se rm = max (r1 , r2 ), rn = min (r1 , r2 ) , ento: 2 r .u + 1 = 2 rn 2 rm .u m .u n + u n + 2 rm rn .u m + 1 . Assim, v-se que a paridade de 2 rm .u m .u n + u n + 2 rm rn .u m depende dos valores de rm e rn . Nota-se que 2 r 2 rn , mas ento 2 rn | 2 r .u , isto 2 rn | N 1 . Alm disso, 2 rn | q 1, p 1 . No entanto, 2 rn +1 / q 1 ou p 1 , pois ele a exata potncia de 2 que divide q 1 ou de p 1 . |
Proposio 5.1.3: Se S(N) o conjunto das redues a mod N tal que N um pseudoprimo forte

)(

na base a, ento S ( N )

(N )
4

Demonstrao:

Pelo lema 5.1.4, temos que:

(N )
S (N )

(N )
2.2 (v ( N )1).w MDC (u, p 1)
i =1 w

1 w (i )1 p 1 = . pi . v ( N )1 2 i =1 2 .MDC (u , p 1)

Vamos provar o teorema para os seguintes casos: 4. 5. 6. 7. N = p , p = 2 r '.u '+1, 2


w i =1

N = pi i , w 3, pi = 2 i .ui + 1 , isto , N com 3 ou mais fatores primos distintos. N = p .q, p = 2 r1 .u1 + 1, p = 2 r2 .u 2 + 1, 2 N = p.q, p = 2 r1 .u1 + 1, p = 2 r2 .u 2 + 1

154

Notemos que, sendo p fator primo mpar de N, podemos escrev-lo da forma usual p = 2 r '.u '+1 . Com isso:

p 1 2 r '.u ' 2 r ' v ( N )+1.u ' 2.u ' = v ( N )1 = v ( N )1 r' 2 .MDC(u, p 1) 2 .MDC u ,2 .u ' MDC (u , u ') MDC (u , u ')

(1),

pois

v N r ' . Mais do que isso, sabendo que MDC (u , u ') | u ' , temos que

2.u ' 2 (2) MDC (u , u ')

Com isso, fica visvel que para qualquer fator primo de N faremos o produtrio apenas para nmeros inteiros. Com essas informaes vamos analisar os casos citados: 1. N = p , p = 2 r '.u '+1, 2

( N ) 1 1 p 1 = . p . v ( N )1 , mas por (2) temos ento que: S (N ) 2 2 .MDC (u , p 1) (N ) 1 1 (N ) . p .2 = p 1 . Como p > 9 p > 3 ou > 2 . Logo, p 1 5 5 S (N ) 2 S (N )
2. N = pi i , w 3, pi = 2 ri .ui + 1
i =1 w

Sabendo que existem ao menos trs fatores primos p1 , p 2 , p3 distintos de N, ento podemos concluir, por (2), que 3.

(N ) 1 (N ) .2.2.2 = 4 e, portanto, 4. S (N ) 2 # S (N )

N = p .q, p = 2 r1 .u1 + 1, p = 2 r2 .u 2 + 1, 2

Por (2), podemos concluir que: ento p 3 . Logo, 4.

(N ) 1 1 . p .2.2 = 2. p 1 . Como p um primo mpar, S (N ) 2

(N ) 6 S (N )

N = p.q, p = 2 r1 .u1 + 1, p = 2 r2 .u 2 + 1

(N ) 1 Caso r1 > r2 , pode-se constatar, por (1) e por (2), que: .2.2 r1 r2 +1 2 2 = 4 . S (N ) 2
Caso r1 = r2 , ento suponhamos, sem perda de generalidade, que p > q .

155

temos que u1 > u 2 e v( N ) = r1 . Por (1), temos:

2.u1 2.u 2 (N ) 1 . S ( N ) 2 MDC (u, u1 ) MDC (u , u 2 )

Pelo lema 5.1.5, temos que p 1 / N 1 . Agora, pelo lema 5.1.6, temos que 2 r1 | N 1 , ou | seja, 2 r1 | 2 r .u . Como t mpar, 2 r1 | 2 r Suponhamos, ento, que MDC (u, u1 ) = u1 . Isso implica que u1 | u , mas ento, 2 r1 .u1 | 2 r .u , isto , p 1 | N 1 , o que uma contradio. Portanto, MDC (u , u1 ) < u1 . Logo, e, enfim, conclumos que 2.u 2 2.u1 (N ) 1 . 2.2 = 4 . S ( N ) 2 MDC (u, u1 ) MDC (u , u 2 ) u1 2 MDC (u , u1 )

Notemos que qualquer outra forma de N contm um fator no primo com uma das formas estudadas. Como vemos que o produtrio s ser feito com nmeros inteiros, podemos afirmar ento que, para qualquer outro caso,

(N ) (N ) 4 , isto , S ( N ) . S (N ) 4

Corolrio 5.1.1: Se N > 9 um nmero composto, ento a quantidade de testemunhas de N

menor do que

N . 4

O corolrio trivial, pois ( N ) < N 1 , e pela proposio 5.1.3, S conseguinte, S < N . 4

(N ) e, por 4

156

Corolrio 5.1.2: A Chance de acerto de Miller-Rabin (teorema 5.1.1):

Seja k o nmero de iteraes feitas pelo teste de Miller-Rabin. Se o teste no acusar que N composto, ento a chance de acerto E = 1 1 . 4k

Demonstrao:

Seja S = {a, 1 a < N : a no uma testemunha de N } . Temos, pelo corolrio 5.1.1, que S < N . Logo, podemos assumir que a chance de se escolher um a tal que N um pseudoprimo 4 1 1 . Ora, sendo k iteraes, E k = . 4 4 1 . 4k
k

forte na base a E1 =

Portanto, a chance de acerto A = 1

5.2.

Algoritmo e Anlise de Custo


Para analisar o custo deste teste, iremos enunciar seu algoritmo, a fim de identificar

melhor cada passo que deve ser tomado em sua aplicao computacional:
Algoritmo 5.2.1: Teste de Miller-Rabin Entrada: Inteiro mpar n 3 ; inteiro k 1 Variveis: u, r, b, a, s, resp inteiros Incio

1. 2. 3. 4. 5. 6. 7.

u r

n1 0 u r u div 2 r+1

Enquanto u par faa

Fim_Enquanto

resp = 0 157

8. 9. 10. 11. 12. 13. 14. 15. 16. 17.

Enquanto k 1 e resp 0 faa

s a b

r
randmico(2, n - 2)

a u (mod n )

1 se b { , n 1} ento 1 Enquanto b { , n 1} e s > 1 faa b s b 2 (mod n ) s1

Fim_Enquanto se b n 1 ento resp

-1

18. Fim_Enquanto 19. Retorne (resp > -1)


Fim_Programa Anlise do algoritmo 5.2.1

Vejamos primeiramente se o algoritmo realmente executa as condies do Teste MillerRabin. Antes de qualquer coisa, atentemos a condio da linha 20: O retorno ser verdadeiro caso resp seja maior do que -1 e falso caso contrrio. Ento, atentemos para o valor da varivel resp, pois caso seja -1, significar que o nmero composto.
r Notemos que da linha 1 at a linha 6, apenas est se determinando n 1 na forma 2 .u ,

que necessrio para a anlise das condies de testemunha de N. Para analisarmos o prximo lao, atentemos para a definio alternativa de testemunha de N: a u 1(mod N ) e a 2 .u 1(mod N ) , para todo s, 0 s < r . / /
u Primeiramente o algoritmo testa a reduo a (mod n ) e a compara com 1 e n 1 (linhas s

11 e 12). Caso a comparao acima seja bem sucedida, no se sabe se N composto. Caso no seja, resta apenas testar a 2 .u 1(mod N ) , para todo s, 0 < s < r . Isto feito no lao da linha 13. / Reparemos que o lao tambm testa, a cada volta, se a 2 .u 1(mod N ) , verificando sempre se
s s

b { , n 1}. Caso b seja n 1, o lao termina, pois a condio falhou, isto , para algum 1
158

s, 0 < s < r temos a 2 .u 1(mod N ) . O lao tambm cessa caso b seja 1. Isto porque se o algoritmo obtiver este valor, ento, com certeza, nenhum valor seguinte de b ser r 1 e, portanto, a uma testemunha de N. Caso o lao s pare quando s = 1, significa que b foi elevado ao quadrado s 1 vezes e em nenhuma delas as congruncias acima foram atendidas, o que significa que a uma testemunha de N. Finalmente, vemos que, em se constatando que N composto, resp recebe 1. Caso contrrio, resp permanece com o valor 0, o que condiz com a condio da linha 20 e, portanto, o algoritmo funciona. Agora, quanto anlise do custo, visivelmente o lao da linha 8 o mais relevante. Nele, a operao de maior custo o lao da linha 13. Este ir se repetir no mximo r 1 vezes, isto , no mximo aproximadamente log 2 n . Ora, vendo que o custo de suas operaes internas O(log 3 n ) , evidentemente ter um custo mximo de O(log 4 n ) . Notemos que o lao da linha 8 se 2 2 repetir no mximo k vezes. Mas k constante. Portanto, o custo do algoritmo efetivamente O(log 4 n ) , o que evidencia que um algoritmo polinomial. 2

159

Captulo 8. O Teste de Solovay-Strassen


Neste captulo estudaremos outro teste de primalidade classificado como de Monte Carlo: O Teste de Solovay-Strassen. Uma das bases tericas deste teste , no caso, as propriedades do Smbolo de Jacobi14. Veremos que este teste tem uma demonstrao mais simples do que o Miller-Rabin, mas, em contrapartida, apresenta uma margem de acerto menor: 50%.

8.1. Teorema de Solovay-Strassen


p 1 2

Lema 8.1.1: Se p um primo mpar, ento: a Demonstrao

a .( ) 1(mod p ) para todo a { ,..., p 1} . 1 p

Pela proposio 1.9.2 (critrio de Euler), a a como ( ) = 1 , temos que a p


p 1 2

p 1 2

a ( )(mod p ) , donde a p

p 1 2

a a .( ) ( ) 2 (mod p ) e, p p

a .( ) 1(mod p ) . p

Lema 8.1.2: Seja n um inteiro composto mpar, se: a Demonstrao

n 1 2

a .( ) 1(mod n ) , ento a n 1 1(mod n ) . n

n 1 a a a a Claramente, como ( ) = 1 , temos que ( ) 2 = 1 e, como a 2 .( ) = a n1 .( ) 2 1(mod n ) , n n n n

conclumos que a n 1 1(mod n ) .

14

Toda esta teoria citada pode ser vista no captulo 1, seo 9.

160

Lema 8.1.3: Se n Z um nmero composto mpar maior do que 3, ento o conjunto


n 1 a B = a : a 2 .( ) 1(mod n ) um subgrupo de U (Z n ) , tal que U (Z n ) B . n

Demonstrao:

Como U (Z n ) um grupo finito, B um subgrupo de U (Z n ) se: 1. 1 B ; 2. a, b B a.b B ; Obviamente,


a
n 1 2

vale
n 1 2

primeira

propriedade. com isso:

Agora,

se

a, b B ,

temos

que logo,

a .( ) 1(mod n ), b n
n 1

b .( ) 1(mod n ) , n

(a.b ) 2

n 1

a b .( ).( ) 1(mod n ) , n n
n 1 2

(a.b ) 2

.(

a.b * ) 1(mod n ) . Dessa forma, basta mostrar que a Z n : a n

a .( ) 1(mod n ) . Para / n

tanto, temos dois casos:


1.

n = p k , com p primo e k inteiro maior ou igual a 2. Neste caso, pelo corolrio 1.7.2, U (Z n ) cclico, donde existe a U (Z n ) tal que

| ord n a = p k , logo a n 1 1(mod n ) j que p k / n 1 . Portanto, pelo lema 8.1.2, temos que /
a
2.
n 1 2

( )

( )

a .( ) 1(mod n ) . / n

Se n = n1 .n 2 tal que MDC (n1 , n 2 ) = 1 , n1 > 1 e n2 > 1 . Seja b U Z n

( ) tal que ( nb ) = 1 . Pelo teorema 1.3.4 (teorema chins dos restos), existe
1

um a, 1 a < n tal que: a b(mod n1 ) e a 1(mod n2 ) . Claramente, MDC (n1 , a ) = 1 e

MDC(n2 , a ) = 1 , ou seja, a U (Z n ) . Pelas propriedades do Smbolo de Jacobi temos, ento:


a a a b 1 ( ) = ( ).( ) = ( ).( ) = 1.1 = 1 n n1 n2 n1 n2

161

Ora, caso a

n 1 2

a ( ) 1(mod n ) ento a n

n 1 2

1(mod n ) donde a
n 1 2

n 1 2

1(mod m ) , o que

uma contradio, pois a 1(mod m) . Portanto, a

a .( ) 1(mod n ) . / n

Teorema 8.1.1: Teste de Solovay-Strassen

Dado n um inteiro positivo, seja a um nmero aleatrio tal que 1 < a < n 1 . Se a
n 1 2

a .( ) 1(mod n ) ento n composto. Caso contrrio, a chance de n ser composto / n

n 1 1 a , e caso valha que a 2 .( ) 1(mod n ) para k nmeros a distintos entre 1 e n 1, ento a 2 n

chance de n ser primo de

1 . 2k

Demonstrao:

Se n for primo, pelo lema 8.1.1, a

n 1 2

a .( ) 1(mod n ) e no h o que demonstrar. n

Se n for composto temos, pelo lema 8.1.3, que o conjunto de solues tal que
a
n 1 2

a .( ) 1(mod n ) um subgrupo B de U (Z n ) , tal que U (Z n ) B . / n

Pelo teorema 1.5.1 (teorema de Lagrange), temos que a ordem de B divide a ordem de
1 n U (Z n ) . Com isso, temos que B .U (Z n ) , donde B < . Com isso, bvio de que a 2 2

probabilidade de se escolher um nmero no intervalo 1...n - 1 que atenda a condio testada de


1 1 . Com k iteraes, pelo princpio fundamental da contagem, a probabilidade k . 2 2

162

8.2.
8.2.1.

Algoritmo e Anlise de Custo


Algoritmo: Teste de Solovay-Strassen

Entrada: Inteiro k e n 3 Variveis: a, i: Inteiros Incio

1. Para i de 1 at k faa 2. 3. a
Se a

Aleatrio( 2, n 2)
n 1 2

a ( ) mod n 1 ento Retorne Falso n

4. Fim_Para 5. Retorne Verdadeiro


Fim_Programa 8.2.2. Anlise de Custo

A validade do algoritmo notvel, devido a sua simplicidade. Ora, o teste ser feito para no mximo k inteiros entre 2 e n 2. Na linha 3 testada exatamente a condio do teorema 8.1.1. Notemos que, caso ela seja verdadeira, imediatamente o algoritmo retorna falso, pois o nmero composto. Do contrrio, ele prosseguir com os testes para outros inteiros at que, para algum deles, a condio seja verdadeira, ou at que se esgotem os testes do lao. Se para nenhum inteiro testado a condio da linha 3 for verdadeira, significa que o nmero provavelmente primo e, por isso, logo aps a sada do lao, retorna-se verdadeiro. Quanto ao custo do algoritmo, como no caso do Teste de Miller-Rabin15, o nmero de repeties ignorado, pois considerado constante. Assim, a nica operao aritmtica o teste da linha 3. Ora, temos neste teste trs operaes distintas: potenciao mdulo m, clculo do smbolo de Jacobi e reduo mdulo m. De fato, destas a operao mais custosa a potenciao mdulo m, portanto o custo do algoritmo ser o desta operao, que O (log 2 n ) . 2

15

Anlise de Custo 7.2.1

163

Em comparao com o algoritmo de Miller-Rabin16, este bem menos custoso. Portanto, podemos dizer que, apesar de Miller-Rabin ter uma margem de erro de ter
1 e o Solovay-Strassen 4

1 , este ltimo tem um custo que praticamente a raiz quadrada do anterior e, portanto, os 2

testes tem uma eficincia muito semelhante.

16

Algoritmo 7.2.1

164

Captulo 9. O Algoritmo AKS


Iremos tratar agora do algoritmo AKS, a soluo que impressionou o mundo matemtico para o Problema da Primalidade. Neste captulo apresentaremos o algoritmo e demonstraremos sua validade e eficincia.

9.1. Teorema Fundamental


Abaixo enunciaremos uma proposio que serve como base principal para o funcionamento do AKS.
Proposio 9.1.1: Temos que p primo se, e s se, (a + b ) = a p + b p em Z p . Demonstrao Sabe-se
p

que

(a + b ) p

2 p = a p + C 1 .a p 1 .b + C p .a p 2 .b 2 + ... + C p 1 .a.b p 1 + b p , p

onde

C ip =

p! p! p.( p 1)...( p i + 1) . Como i Z . Mas, para 1 i p 1 temos que = i!.( p i )! i!.( p i )! i!

menor do que p, temos que i! / p , logo p | C ip . | Se p for primo, todo C ip com 1 i p 1 zero em Z p donde conclumos que

(a + b ) p

= ap +bp .

Se p for composto, ento tomemos i e , com i primo, como a maior potncia de i que divida p. Seja ento C ip = p = i e .c , onde c no mltiplo de i. Ento temos que

p.( p 1)! i e .c.( p 1)! i e 1 .c( p 1)! . Observemos que este nmero divisvel por p s se = = (i 1)!( p i )! i!( p i )! i!( p i )! for divisvel por i. No entanto, temos

( p 1)! (i 1)!( p i )!

( p 1)! = ( p 1)( p 2)...( p i + 1) ; mas . (i 1)!( p i )! (i 1)!

| i | p e i / j para qualquer j, 1 j i 1 ; logo, i / ( p j ) . Portanto, como p / C ip , temos que | |

(a + b ) p a p + b p em

Zp . 165

Esta proposio sugere um teste de primalidade que, de fato, determinstico: expandir o binmio de Newton (a + b ) e verificar se todo C ip para 1 i p 1 divisvel por p. Se isso acontecer, significa que p primo. No entanto, este no um procedimento eficiente. Notemos que sero feitas p 1 verificaes e, se levarmos em conta apenas a verificao de divisibilidade, cada uma ter um custo de O(log 2 p ). Assim, o custo do processo total ser O( p log 2 p ) , ou seja, 2 2 seria um algoritmo exponencial. A idia do AKS limitar o nmero de testes necessrio, mas ainda sim obtendo um resultado satisfatrio. Claro que esta limitao tem um preo. Veremos que, com ela, no descobriremos se p primo, mas apenas se uma potncia de primo. No entanto, podemos descobrir, em tempo polinomial, se dado nmero uma potncia perfeita de outro usando o algoritmo 4.7.1. Portanto, caso consigamos determinar se dado nmero uma potncia de primo, em tempo polinomial, bastaria executar o teste da potncia perfeita e teramos um algoritmo de primalidade de tempo polinomial. Iremos, ento, demonstrar os resultados necessrios para conseguir esta faanha, a comear por uma definio para diferenciarmos algumas classes de equivalncia relacionadas.
Definio 9.1.1: Seja Z m um anel e seja I um ideal de Z m . Denotamos por a as classes de
p

equivalncia do conjunto quociente

Z m [x ] , representadas pelo elemento a Z m [x ] . I

Isso til apenas para diferenciarmos as classes de Z m das classes de um conjunto quociente Z m [x ] . Abaixo, denotaremos por f (x ) o ideal gerado pelo polinmio f ( x ) Z m [x] , I

com m Z . Passaremos, ento, para a demonstrao de um resultado importante para nossas concluses.

166

Lema 9.1.1: Sejam n, r , b, p Z positivos com p primo. Se x + b

= x n + b em

Z p [x] xr 1

, ento

(x + b)

ni p j

= xn

ip j

+ b em

Z p [x ] xr 1

para i, j Z positivos.

Demonstrao
Notemos que x + b

ni

i = x n + b para i = 1 . Suponhamos ento que verdadeiro para i 1

e provemos que verdadeiro para i + 1. Mas

(x + b)

n i +1

= x+b

ni

que, por hiptese de induo, igual a

(x

ni

+b .

n i i i i +1 Substituindo x n por y , temos que x n + b = y + b = y n + b ; logo, x n + b = x n + b .

) ( )
n

Portanto, x + b

ni

i = x n + b para qualquer i 1 . No entanto, pela proposio 9.1.1, temos que

(x

ni

+b

i i i = x n p + b p e, pelo teorema 1.2.1 (Teorema de Fermat), x n p + b p = x n p + b .

Com isso, temos que x + b em Z p [x ] xr 1 .

ni p

= x n p + b . Tudo isso vale em Z p [x] e, por sua vez, vale

i j

Enunciaremos, agora, o teorema central do AKS. Sua demonstrao ser feita por etapas.

167

Teorema 9.1.1(Teorema Fundamental do AKS)

Sejam n, r Z tal que n 2 , r um primo positivo e S = { ,2,..., r} tal que: 1 1. r no divide n; 2. MDC (n, b b') = 1 para quaisquer b, b' S distintos;
r 3. C 2 r 2 n

2 d r 1 d

para qualquer inteiro positivo d tal que d |

r 1 ; ord r n

4.

(x + b)

Z [x ] para todo b S = x n + b em rn x 1

Ento n uma potncia de primo.


Demonstrao

Parte 1: (Construo dos conjuntos essenciais) Primeiramente, iremos construir conjuntos de polinmios que tero ordens em conformidade com a hiptese 3. Para tanto, tomemos p Z , p primo, tal que p divida n. Como MDC (n, r ) = 1 ento n e p so inversveis em Z r . Podemos formar ento o subgrupo p, n = p i n j , i, j Z . A partir dele podemos formar o grupo quociente ordem desse grupo de d. Observemos, ento, que a ordem de p, n

U (Z r ) . Chamemos a p, n

r 1 . Como n um d r 1 r 1 , logo d | . d ord r n

subgrupo de p, n , pelo teorema 1.5.1 (Teorema de Lagrange), ord r n | Com isso, vemos que d atende a hiptese 3.

Agora, usando o primeiro grupo que construmos, iremos montar um novo grupo. Para tanto, tomemos os d representantes de classes distintas de Z p [x ] h U (Z r ) e os denominemos p, n

m1 , m2 ,..., md . Tomaremos o corpo K =

, onde h um fator irredutvel de x r 1 em Z p [x ] .

O nosso anel essencial ser um subgrupo B de K * , tal que: 168

B = x m1 + b, x m 2 + b,..., x md + b , onde b S .

Para simplificar a notao daqui em diante, iremos chamar

Z p [x ] x 1
r

de W e

U (Z r ) de Y. p, n

Parte 2: (Demonstrao da cota inferior de B) Agora, precisaremos mostrar que B n


2 r 1 d

. Veremos que a validade dessa cota

essencial para todo o restante da demonstrao. Para demonstr-la definamos uma funo
e : S a N tal que
m1 m2

e(b) < r 1 . A esta funo associaremos a seqncia de polinmios bS


md

~ ~ ~ ~ (e (x ), e (x ),..., e (x )), onde e ( y ) = ( y + b)


bS

e (b )

. Pela definio desta seqncia, observemos

que cada um de seus elementos pertence a K. O que precisaremos provar agora que, caso tomemos funes e1 e e2 distintas de acordo com a definio acima, as seqncias de polinmios associadas a elas sero tambm distintas. Antes de provarmos este fato, vejamos como ele implica no que queremos demonstrar nesta parte. ~ m ~ m ~ m Primeiramente, o conjunto E das seqncias e x 1 , e x 2 ,..., e x d

( ( ) ( ) ( )) tem, pelo menos,

tantos elementos quantos so as funes e distintas. Consideremos que E possua todas as seqncias possveis com os d elementos de B. Assim, por contagem, podemos dizer que E = B . Mas notemos que
d

e(b) < r 1 para todas as funes e que estamos considerando.


bS

Notemos tambm que o domnio das funes e finito e leva aos naturais. Portanto, podemos considerar que a imagem destas funes no mximo uma seqncia de inteiros positivos onde a somatria resulte em valores menores do que r 1. Assim, por contagem temos que s existem
r r r C 2 r 2 funes e possveis. Logo E = B C 2 r 2 . Mas, pela hiptese 3 C 2 r 2 n d 2 d r 1 d 2 r 1 d d

2 d r 1 d

. Logo,

B n

, donde conclumos que B n

. Portanto, bastar provar a distino das

seqncias associadas s funes e1 e e2 distintas.

169

Para

provar

essa

distino,

tomemos

e1 : S a N

e2 : S a N

tal

que

e1 (b), e2 (b ) < r 1 , e suponhamos que as seqncias associadas a estas funes coincidam. bS bS


m ~ m e Logo e1 x i = ~2 x i em K para todo i entre 1 e d. No entanto, pela hiptese 4 e pelo lema 9.1.1

( ) ( )
( )
n k pl

temos: ~ m e1 x i
e (b ) m 1 = x i +b bS

n k pl

1 m n k pl x i + b bS

e (b )

~ = e1 x

mi n k p l

em

para

k , l Z positivos. Mas h | x r 1 , donde conclumos que essa igualdade tambm vlida em K,

~ m n k pl donde tambm temos que e1 x i

= ~ x mi n k pl e2

. Como, por hiptese, todos os m so i

elementos distintos do grupo Y, temos que para um inteiro tal que 1 r 1 , vale

mi n k p l (mod r ) , isto , mi n k p l + tr para algum t Z .


Seja ento ~ ~ g ( x ) = e1 ( x ) e2 ( x ) . Em W, temos que vale a igualdade

m nk pl m n k pl g (x ) = g x i .x tr = g x i . Novamente, como h | x r 1 , temos que a mesma igualdade

~ m n k pl = ~ x mi n k pl vale em K. No entanto, como e1 x i e2

, podemos concluir que g x = 0 em K.

( )

Consideremos, ento, o conjunto R = {x : 1 r 1} K . Notemos que, x r = 1 em K,


j que h | x r 1 . Pela proposio 1.6.2 (Teorema de Lagrange), a ordem de x em K * divide r,

mas r primo. Logo, a ordem de x r. Mas isso implica que os elementos de R so todos distintos e, como g (x ) = 0 em K e, pelo corolrio 2.2.1, um polinmio no pode ter mais razes do que seu prprio grau em um corpo, ento g (x ) tem no mximo r 1 razes em Z p [x ] . Finalmente, como bS

e (b), e (b ) < r 1 ,
1

bS

~ e temos ento que e1 = ~2 em Z p [x ] . Mas, pela

hiptese 2, para b b ' temos que MDC ( p, b b') = 1 , j que p divide n. Logo b b ' 0 em
~ Z p [x ]. Assim, pela definio das funes e e pelo Teorema 2.2.6 (Fatorao nica de
2 Polinmios), ~1 = ~2 s se e1 = e2 e isso, como est expresso acima, implica que G n e e r 1 d

170

Parte 3: (Validade do Teorema) Finalmente, encerraremos a demonstrao deste teorema. Para tanto, iremos considerar os
2 pares n i p j para 0 i, j r 1 . Notemos que 1 n i p j n d r 1 d

, j que n p . Por U (Z r ) n, p , isto ,

conseguinte, n i p j

pertence ao subgrupo

n , p Z r . No entanto d =

n, p =

r 1 r 1 . Logo, no pode haver mais do que elementos em d d


2

n, p . Mas, como

r 1 0 i, j r 1 , o par ordenado (i, j ) tem r 1 + 1 > valores possveis, donde d d d conclumos que as classes n i p j no podem ser todas distintas em n, p . Tomemos ento dois pares distintos
k l k l

(k1 ,l1 )

(k2 ,l2 )

que atendam a congruncia


k l k l

n 1 p 1 n 2 p 2 (mod r ) . Para simplificar a notao, assumamos u = n 1 p 1 e v = n 2 p 2 . Sem perda de generalidade, podemos dizer que v u . Alm disso, pela definio de u e v temos que

u v(mod r ) , implicando que

v = u + qr

para algum

* q Z + . Agora, notemos que

x u + qr = x u x r q = x u em W, donde conclumos que x u = x v em W. Agora, pela definio do

polinmio h, temos que h | x r 1 , donde conclumos que esta igualdade tambm vale em K. Todavia, pelo lema 9.1.1 e pela hiptese 4 temos que:
Agora, como x u = x v , temos que

bS bS (x
mi

x
u

u mi

+b =
mi

bS (x

(x

mi

u +b .

+b

+ b . Para prosseguir com a

bS

demonstrao, lembremos a definio de B, e veremos que ele gerado por esse produtrio. Assim, temos que, para qualquer g B , vale a igualdade g u = g v em K. Por conseguinte, pela definio de u e v, temos que 1 u v n
2 r 1 d

. Logo, v u + 1 n
2 r 1 d

2 r 1 d

. Finalmente, usando

a cota inferior para B, isto , a desigualdade B n

, podemos concluir que v u + 1 B .

Logo, g v g u = g u (g v u 1) tem, pelo menos, v u + 1 razes no nulas em K, sendo estas as razes de g v u 1 . Agora lembremos que B um subgrupo de K * , mas K um corpo, donde 171

conclumos, pelo corolrio 2.2.1, que este polinmio no pode ter mais razes do que seu prprio grau. Assim, v u > 0 no pode ocorrer, donde conclumos que v = u . Pela definio de u e v, ento, n 1 p 1 = n 2 p 2 . Notemos que, se k1 = k 2 ento l1 = l2 , isto , (k1 , l1 ) = (k 2 , l 2 ) , o que contraria a definio destes pares. Logo, k1 k 2 , donde podemos dizer que n 1
k k2

> 1 . No entanto, n 1

k k2

= p 2 1 . Portanto, n uma potncia de p, o que encerra a

l l

demonstrao.

9.2.

Algoritmo
Vimos na seo anterior hipteses suficientes para que um dado inteiro seja potncia de

um primo. A questo que o teorema exige algumas hipteses nada intuitivas. Assim, ser possvel determinar a validade de cada uma delas em tempo polinomial? A resposta sim. Veremos que no s possvel verificar a validade das hipteses em tempo polinomial como tambm veremos que, com o auxlio do algoritmo 4.7.1 (Teste da Potncia Perfeita), poderemos determinar se n primo ou composto. Reparemos que esse resultado vai alm dos resultados obtidos at agora. Afinal, garantir que n no uma potncia perfeita e que ele uma potncia de primo implica obviamente que n primo. Por outro lado, no demonstramos a recproca do teorema 9.1.1 sendo que, supostamente, caso descubramos que as hipteses do teorema no so satisfeitas, unir a verificao delas ao teste da potncia perfeita no implicaria exatamente que n composto, tendo em vista que, sem a recproca do teorema, mesmo diante da no validade das hipteses no poderamos afirmar que n no uma potncia de primo. Para esclarecer todas estas consideraes enunciaremos o algoritmo.

172

Algoritmo 9.2.1: (AKS) Entrada: n: Inteiro mpar maior do que 2. Variveis: r, i, a, b: Inteiro Incio

1. Se n = a b para algum a, b 2 ento retorne .F. 2. r 3. i 3 1


2

4. Enquanto (r < n) e i 4log 2 n faa 5. 6. 7. 8. 9. 10.


Se r primo ento Se r | n ento retorne .F.

1
2

Enquanto i 4log 2 n e n i mod r 1 faa i Fim_Se

i +1

r+2

11. Fim_Enquanto 12. Se r = n ento retorne .V. 13. Para i de 1 at r faa 14.
Se ( x + i ) mod x r 1 x n mod r + i em Z n [x ] ento retorne .F.
n

15. Fim_Para 16. Retorne .V.


Fim

173

9.3.

Anlise do algoritmo

9.3.1. Funcionalidade do algoritmo

Primeiramente, iremos verificar que, de fato, o algoritmo funciona. A primeira linha simplesmente aplica o teste da potncia perfeita que j falamos ser necessrio para complementar o teorema principal. Da segunda at a dcima primeira linha o processo no to claro. Veremos que este trecho do algoritmo verifica a validade das hipteses 1, 2 e 3 do teorema principal. Notemos que esta etapa seleciona os primos entre 2 e n. Caso um desses primos divida n, obviamente n composto, e a sexta linha verifica isso. A stima e a oitava linha verificam se o primo r testado no momento atende a desigualdade n i 1 em Z r para todo i tal que 1 i 4 log 2 n . Caso ocorra, temos que a ordem de n em Z r maior do que 4log 2 n e o lao encerrado. Supostamente um r foi determinado, mas as hipteses 1, 2 e 3 foram satisfeitas? Primeiramente, se o algoritmo avanou para a dcima segunda linha isso significa que nenhum primo menor ou igual a r divide n, mas isso j garante a hiptese 1 e 2. Para verificar que a hiptese 3 tambm foi garantida, digamos que ord r n = v e tomemos um inteiro d que divida r 1 r 1 r 1 r 1 . Isso implica que d < . Desta desigualdade vemos que 2 2 v v 4 log 2 n 4(log 2 n )
2 log 2 n < 2 2

r 1 r 1 r 1 r 1 , isto , log 2 n < ,e . Por conseguinte, 4d 4d log 2 n log 2 n


r 1 (r 1) = (r 1) 4 d = 4d (r 1) . > r 1 r 1 log 2 n 4d

r 1 r 1 r 1 r 1 = 4d (r 1) . Portanto, 2d . No entanto, 2d 2d < d d d log 2 n


Assim, podemos dizer que n
r C 2r 2 n

2 d r 1 d

<n

r 1 log 2 n

. Mas n

r 1 log 2 n

r = 2 r 1 e C 2 r 2 2 r 1 . Portanto,

2 d r 1 d

, para qualquer d que divida

r 1 , o que exatamente a hiptese 3. v

174

Reparemos que, caso um primo r no seja encontrado, o lao da quarta linha ir prosseguir at que r = n . Neste caso, teremos certeza que nenhum primo menor do que n o divide, o que implica que n primo. Esta exatamente a condio testada na linha 11. Da dcima terceira at a dcima quinta linha, a quarta e ltima condio do teorema 9.1.1 verificada. De fato, testar a desigualdade equivalente a testar ( x + i )n x n + i em

(x + i )n mod(x r 1) x n mod r + i

em Z n [x]

Z n [x ] . No entanto, pela proposio 9.1.1 e pelo xr 1

n teorema 1.2.1 (Teorema de Fermat), se n primo ( x + i ) = x n + i em Z n [x]. Logo, caso essa n igualdade no seja atendida, n s pode ser composto. Em contrapartida, caso ( x + i ) = x n + i

para todo i entre 1 e r, todas as condies do teorema 9.1.1 foram atendidas, logo n a potncia de um primo. Como j se sabe que n no potncia perfeita de nenhum nmero, a concluso que n primo. Portanto, com esta anlise vimos que em nenhum momento o algoritmo encerrado sem determinar se n composto ou primo, o que deixa clara sua funcionalidade.
9.3.2. Eficincia do algoritmo

Verifiquemos ento a eficincia do algoritmo. A primeira linha tem custo O log 7 n , segundo a anlise do algoritmo 4.7.1. O prximo 2 trecho que merece ateno da linha 4 at a 11. Reparemos que h um subteste de primalidade na linha 5, o qual precisamos garantir que ser efetuado um nmero limitado de vezes.
9.3.2.1. Anlise do teste de primalidade para r
2 2

Como j vimos, este lao pode parar quando o algoritmo encontrar um primo mpar r tal que ord r n > 4log 2 n , isto , n i 1(mod r ) para todo 1 i 4 log 2 n . / Notemos que a afirmao acima equivalente a dizer que r no divide
4 log n 2 N = 2n(n 1)(n 2 1)... n 2 1 . Para provar isso, tomemos k o menor inteiro tal que

N < 2 k . Pelo teorema 1.8.1, o produto de todos os primos menores do que 2k 2 maior ou igual

a 2 k . Logo, tem que haver um primo menor do que 2k 2 no divisor de N; mas 2 k 1 < N pela minimalidade de k, logo k 1 < log 2 N ento k < 1 + log 2 N . Isto k 2 < (1 + log 2 N )
2

175

Pelas propriedades do logaritmo, temos que:


4 log n 2 log 2 N = 1 + log 2 n + log 2 (n 1) + log 2 (n 2 1) + ... + log 2 n 2 1

Como logaritmo uma funo crescente, temos que log 2 (n i 1) < i log 2 n . Ento: log 2 N < 1 + log 2 n + log 2 n + 2 log 2 n + ... + 4log 2 n log 2 n Donde temos que: log 2 N < 1 + 1 + 2 log 2 n 4 log 2 n 1 log 2 n . Logo, 2k 2 < 2 1 + 1 + 2 log 2 n 4 log 2 n 1 log 2 n
2

))

( (

))

Ou seja, conseguimos um limite logartmico para o primo r procurado. Em termos de custo, este limite O log 5 n 2

((

) ) = O(log n) . Agora, para cada r verificaremos a primalidade da


2 10 2

forma mais bruta possvel: tentando dividir o prprio r por todos os mpares at a sua raiz. Como o custo de r O log10 n , o custo destas divises ser O log10 n. log 2 n = O log12 n . Notemos que 2 2 2 2 feito um teste de primalidade para todo r mpar menor do que 2k 2 . No entanto, considerando que a maioria dos testes de primalidade constatariam que o r em questo no primo, podemos considerar o custo total como O log12 n . 2
9.3.2.2. Anlise da diviso de n por r e do clculo da ordem de r

Na linha 6 do algoritmo verificamos a divisibilidade de n por r. Essa verificao tem custo O log 2 n e ser efetuada no mximo O log10 n vezes, de acordo com os resultados de 2 2 9.3.2.1. Logo, temos que o custo total ser O log10 n. log 2 n = O log12 n . 2 2 2 A ordem de r calculada caso ele seja primo, na linha 8. Para tanto so calculadas 4log 2 n redues do tipo n i mod r . Como bem se sabe, a potenciao modular ter custo O log 3 n . Para cada r, sero efetuadas at 4log 2 n potenciaes. Logo, o custo de cada uma 2 ser O log 5 n . Mas, como visto em 9.2.3.1, calcularemos isso para no mximo O log10 n 2 2
2

valores de r diferentes. Logo, o custo ser O log10 n log 5 n . Portanto, o custo desse trecho ser 2 2 no mximo O log15 n . 2

176

9.3.2.3.

Anlise das potenciaes modulares de binmios.

Estamos nos referindo ao clculo da linha 14, que o trecho final do algoritmo. Para determinarmos o custo de uma potenciao modular de um binmio usaremos uma idia semelhante do algoritmo para potenciao modular nos inteiros: tomaremos a forma binria do expoente. Observando o algoritmo da potenciao, veremos que a operao mais crtica o produto de duas funes mdulo n. Assim, nosso problema est reduzido a calcular o custo de f g (mod h ) , ou seja, uma multiplicao e uma diviso em polinmios. De incio, em nosso algoritmo h = x r 1 e estamos em Z n [x] . Logo, podemos assumir que nossos polinmios f e g tm grau menor do que r e coeficientes menores do que n. Isso nos mostra que, no importa quo grande seja n, os polinmios resultantes no processo no tero mais do que r monmios. Como j sabemos, r limitado por log10 n . Para efetuar a multiplicao de dois polinmios de grau no 2 mximo r teremos, ento, que atentar para a definio 2.2.4. Faremos a operao
2r

( f .g )( x) = c k .x k , onde
k =0

ck =

a
i + j =k

b j , sendo que ai o coeficiente em grau i de f e b j em

r grau j de g. Notemos que efetuaremos no mximo multiplicaes para c k e que o custo de 2


cada produto log 2 n , alm disso, k varia de 0 a 2r, donde conclumos que o custo para calcular 2 todos os c k O log 22 n . Como calcular o produto dos polinmios consiste em calcular estes 2 coeficientes, este o custo total da multiplicao. No entanto, de acordo com o lao analisado, faremos isso r vezes. Portanto, o custo total deste trecho O log 33 n . 2
9.3.2.4. Anlise geral

Como bem vimos nos itens anteriores, cada trecho do AKS analisado separadamente tem custo polinomial, o que implica que o algoritmo de fato polinomial. Alm disso, o maior custo obtido foi O log 33 n , donde conclumos que este o custo do algoritmo. 2

177

9.4.

Observaes finais
necessrio destacar alguns pontos muito importantes quanto ao assunto discutido neste

captulo. Em primeiro lugar, a anlise do algoritmo feita neste trabalho pode ser melhorada. Nosso nico objetivo foi mostrar que o algoritmo funcional e polinomial e, para tanto, seguimos um modelo de anlise mais acessvel, encontrado em [COUTINHO 2004]. No entanto, com uma anlise mais cuidadosa poderamos obter resultados bem mais satisfatrios. De fato, poderamos concluir que o custo do algoritmo inferior a O log13 n . A exemplo do autor, que foi a base 2 essencial para a anlise aqui feita, exporemos algumas referncias para anlises alternativas, sendo uma delas [SCHOOF 2003]. Alm disso, notemos que o ltimo trecho analisado foi o que apresentou maior custo sendo que, caso proponhamos um mtodo mais eficiente de calcular a potenciao modular de polinmios o custo do algoritmo cairia drasticamente. Mtodos mais eficientes para tanto podem ser encontrados em [VON ZUR GATHEN 1999, Cap. 8] e em
[CRANDALL 2002, pg. 467].

Em segundo lugar, os estudos feitos sobre o algoritmo AKS no se resumem apenas a anlise do algoritmo. Na verdade, a sua descoberta encadeou uma srie de aprimoramentos e verses particulares, alguns mais eficientes para certos tipos de primos. At algoritmos probabilsticos foram criados com base no AKS. Ou seja, um estudo a fundo deste tema implicaria em uma anlise do algumas dos diversos estudos decorrentes dessa descoberta. Um exemplo disso pode ser encontrado no artigo [BERNSTEIN 2003], que descreve vrias verses diferentes do AKS. Por fim, segue o fato de que o AKS, mesmo sendo polinomial e podendo chegar a um custo de O log13 n , no a forma mais eficiente de se determinar primos hoje em dia. 2 Algoritmos probabilsticos so preferveis a ele, por terem um custo bem inferior e uma margem de erro desprezvel. Outro excelente meio de determinao de primalidade o teste de curvas elpticas, que pode ser encontrado em [CRANDALL 2002]. Enfim, apesar de alcanarmos nosso objetivo que era mostrar que o algoritmo AKS funcional e tem tempo polinomial, nossa anlise pode ser considerada at simplista diante da gama de estudos feito sobre o tema, o que mostra que a soluo de um problema matemtico muitas vezes o gatilho para outra infinidade de estudos. 178

Captulo 10.

Criptografia

Hoje em dia, apropriado falar de Criptografia quando falamos de nmeros primos grandes. Na verdade, as pesquisas feitas nessa rea so impulsionadas principalmente pelas necessidades da Criptografia. Criptografia nada mais do que tcnicas para manter informaes ocultas para terceiros, isto , uma maneira de codificar informaes de tal forma que apenas o remetente e o destinatrio consigam interpret-la. No entanto, o mundo moderno precisa de uma estrutura de criptografia dinmica, que possa ser usada por vrias pessoas, um exemplo disso so as transaes bancrias, que diariamente trafega informaes sigilosas. Devido a isso, conceitos modernos de criptografia necessitam de recursos matemticos mais sofisticados. O mtodo criptogrfico mais usado atualmente chamado de RSA. Vale ressaltar que no pretenso deste trabalho fazer uma abordagem profunda ou precisa de Criptografia. Nosso objetivo apenas passar uma idia desta que , hoje em dia, a aplicao mais importante do estudo da Primalidade.

179

10.1. Criptografia de Chave Assimtrica


O mundo moderno precisa de um sistema dinmico de Criptografia, dado o nmero de usurios em potencial existente. Para isso, foi criado um conceito chamado de Criptografia de Chave Assimtrica. Iremos fazer apenas uma breve explicao da idia para podermos introduzir o RSA. Neste conceito temos quatro elementos fundamentais para os processos de codificao e decodificao das informaes a serem trafegadas. So eles: 1. 2. 3. 4. Algoritmo de Codificao Chave Pblica Algoritmo de Decodificao Chave Privada

Obviamente, os algoritmos de codificao e decodificao so os processos para ocultar e desvendar a mensagem. No entanto, no conceito de chave assimtrica, eles no funcionam por si s. Para codificar a mensagem, alm do algoritmo, necessria uma chave que oferece informaes essenciais para o processo: a chave pblica. Portanto, o algoritmo de codificao e a chave pblica so os dois elementos que tm a funo de codificar a mensagem. Por sua vez, o algoritmo de decodificao tambm precisa de uma chave, matematicamente relacionada com a pblica, no caso, a privada. A relao entre estas duas chaves garante que a mensagem pode ser codificada e decodificada sem perda ou modificao do contedo. A chave de codificao chamada de pblica, pois ela pode ficar disponvel para inmeras pessoas. Portanto, podemos ter vrios remetentes. A chave privada s pode estar disponvel para a pessoa que ir receber as mensagens. Assim, podemos ter apenas um destinatrio. Outras exigncias do conceito so que s seja possvel decodificar uma mensagem com o uso da chave privada correta, e que seja invivel a determinao da chave privada a partir da pblica. Do contrrio, qualquer pessoa em posse da chave pblica conseguiria descobrir a chave privada e vrias pessoas poderiam desvendar a mensagem, o que seria uma falha de segurana.

180

Se tudo isso for atendido, garantimos que dificilmente um terceiro ir interpretar uma mensagem codificada, e que a quebra da Criptografia torne-se invivel, j que ela depende do conhecimento da chave privada. O problema que, para atender todos esses requisitos, precisamos de recursos matemticos sofisticados para fazer a relao entre uma chave e outra, de tal forma que a deduo da chave privada a partir da pblica implique em um problema matemtico intratvel, isto , que demorasse tanto tempo para ser resolvido que tornaria invivel a quebra do cdigo. nesse ponto que introduzimos o algoritmo RSA.

10.2. O RSA e o Problema da Fatorao


Discutiremos ento o mtodo RSA. Este o mtodo criptogrfico mais usado hoje em dia, e sua segurana baseia-se no problema da fatorao. Primeiramente mostraremos o funcionamento e justificativa do algoritmo RSA, para ento discutir o problema da fatorao.

181

10.2.1. O mtodo RSA

Os elementos principais para uso das rotinas de codificao so apenas dois nmeros primos. Vamos chamar estes dois nmeros de p e q. A partir deles iremos encontrar os prximos elementos para a codificao. So estes:
n = p q , o produto dos dois primos;

(n ) = ( p 1) (q 1) , a funo de Euler deste produto;


e U ( (n )) , isto , um elemento inversvel em Z (n ) ; d tal que d e = 1 em Z (n ) , o inverso de e em Z (n ) ;

Agora, como em todo mtodo criptogrfico, temos outros dois elementos a considerar: M, a mensagem original; C, a mensagem codificada;

O mtodo RSA dividir a mensagem em blocos do mesmo tamanho, e esses blocos sero codificados separadamente. Portanto, para cada iterao, a varivel M representar um bloco, e no a mensagem por completo.
A chave de codificao o par (e, n ) . Estes dois nmeros sero usados para codificar a

mensagem. O processo de codificao uma simples potenciao modular. Esta a operao de codificao: C = M e mod n , ou seja, C o resto da diviso de M e por n.
A chave de decodificao o par (d, n ) . O processo de codificao o seguinte:
M = C d mod n .

O processo do RSA apenas isto. A questo , por que funciona? Como podemos garantir que a mensagem codificada C elevada a d em mdulo n ir resultar exatamente na mensagem original? Afinal, se o processo de decodificao no for vlido, de nada adianta o mtodo. Leve em conta o seguinte: os processos so numricos. Alm disso, consideramos tanto C como M valores entre zero e n 1. Caso contrrio, as redues acima no fariam sentido.

182

10.2.2. Demonstrao da Validade do Mtodo

Primeiramente, consideremos a mensagem M menor do que n. Isso necessrio para a consistncia dos resultados. Enfim, sabemos que C M e mod n . Pode-se tomar isto como hiptese tambm, pois no importa qual seja o resultado da codificao, o importante que a decodificao funcione. Ento, temos que C d (M e ) M e.d mod n . Mas, pela construo
d

destas variveis, sabemos que e e d so inversveis mdulo (n ) . Mais do que isso, um o inverso do outro. Logo, podemos dizer que e d = 1 + k (n ) , para algum k inteiro. Substituindo temos: M e.d M 1+ k . (n ) M . M (n )

mod n .

Neste ponto, observemos que, se MDC (M , n ) = 1 , ento temos que, pelo Teorema 1.2.2 (teorema de Euler), M (n ) 1mod n . Logo, M .(M (n ) ) M C d mod n , e a validade da
k

decodificao est demonstrada. Suponhamos, ento, que MDC (M , n ) > 1 . Neste caso, M 0(mod n ) , ou q / M ou p / M . Mas M 0(mod n ) no pode ser | | verdade, pois M menor do que n que o produto de dois primos, o que implica que q / M ou | p / M . Assim, pelo Teorema 1.2.1 (teorema de Fermat), temos que: | Se p | M ento M q 1 1(mod q ) M
p 1

0(mod p )

ou, caso q | M , temos

M M

p 1 q 1

1(mod p ) 0(mod q )

Sem perda de generalidade, podemos assumir o primeiro caso. Notemos que M (q 1)( p 1) 1(mod q ) M ( p 1).(q 1) 0(mod p ) , isto , M (n ) 1(mod q ) M (n ) 0(mod p ) . M (n ) 1(mod q ) M (n ) M (mod p )

Mas p | M , ento M 0(mod p ) . Logo, podemos dizer que

. Assim,

pelo teorema 1.3.4(Teorema Chins dos Restos), podemos concluir que M (n ) 1(mod n ) . Portanto, para qualquer caso, temos que M C d mod n .

183

10.2.3. A segurana do Mtodo e o Problema da Fatorao

Para entender a segurana do RSA, levemos em conta que a mensagem original codificada em blocos. Estes blocos tm que obrigatoriamente serem menores do que n. Caso contrrio, as congruncias discutidas acima no seriam efetivas. Estes blocos podem ter tantos caracteres quanto se queira desde que o nmero de combinaes possveis deles seja menor do que n da mensagem, que seja. Isto s pode ser determinado conhecendo a grandeza de n, mas j fica visvel que dificilmente ser feita uma quebra por fora bruta, isto , por tentativa e erro, associando o bloco codificado ao bloco da mensagem original. Alm disso, existem diversas possibilidades para e e d, podendo estes serem modificados periodicamente. Leve em conta tambm que a chave pblica exatamente o par (e, n ) e isso, fora o algoritmo, a nica coisa que conhecida publicamente. Ora, sabendo que n = p q e conhecendo p e q possvel encontrar o inverso de e, no caso, d. Assim, podemos concluir que uma das possveis formas de quebrar o RSA, talvez a nica que merea ateno, fatorar n. Assim, v-se que quebrar a chave do RSA implica em fatorar n, isto , descobrir p e q. Ora, o processo de fatorao conhecido at por crianas do Ensino Fundamental. Por que ento isso seria um problema? neste ponto que entra a aplicao dos estudos realizados at o momento. necessrio que p e q sejam primos enormes, com mais de 100 algarismos. Para entender o quanto isso influencia na fatorao, notemos que n, com p e q nestas condies, ser mpar. Logo, bastar tentar dividi-lo por todos os nmeros mpares menores para encontrar os fatores primo que o compe. Sabendo que p e q tem mais do que 100 algarismos, iremos efetuar ao menos 5 10 49 divises, j que testaremos a divisibilidade apenas pelos mpares. Agora, suponhamos que cada diviso demore 10 6 segundos, o que uma estimativa muito otimista, levando em conta que poderemos lidar com nmeros bem grandes. Ento, temos que o tempo total para encontrar o menor primo no mnimo 5 10 43 segundos. Algumas contas rpidas mostram que um ano tem 31.536.000 segundos, isto , aproximadamente 3,1.5 10 8 . Logo, o tempo total, em anos, para se encontrar os fatores de n 5 10 43 5 = 10 35 , 8 3,15 3,15 10

aproximadamente 1,59 10 35 . Com isso, fica bem claro que um mtodo tradicional de fatorao impraticvel com nmeros de tamanha grandeza. 184

Em [COUTINHO 2001] e em [CRANDALL 2002] h outros exemplos de algoritmos de fatorao, alguns at eficientes, mas estes fazem uso de alguma forma particular de n. Por exemplo, se n for um nmero de Mersenne, de Fermat ou at ter seus fatores muito prximos. No entanto, no existe nenhum algoritmo conhecido que seja eficiente para qualquer n. Portanto, tomando cuidado para que n no se enquadre em uma das qualificaes acima, podemos concluir que a sua fatorao impraticvel em tempo vivel.

10.3. A Implementao e a Importncia do RSA


Como vimos, o mtodo RSA atende plenamente as exigncias de uma Criptografia Assimtrica e, na verdade, este o mtodo criptogrfico mais usado nos dias de hoje. Devido a isso, a procura por primos grandes e por meios eficientes de determin-los ganharam uma ateno reforada no ltimo sculo. A sua implementao exige alguns recursos computacionais mais sofisticados do que os padres para lidar com nmeros. Isso se deve ao fato de que o computador lida geralmente com nmeros de at 20 algarismos. Devido a essa limitao necessrio montar uma estrutura algbrica totalmente nova no computador, que consiga lidar de maneira satisfatria com nmeros to grandes quanto se queira, ou que a memria do computador permita. Existem vrios sistemas desse tipo, entre eles temos o Maple e o MuPad. A implementao deste mtodo uma questo parte de nossos estudos. J a sua importncia fica bem clara no fato de ser o mtodo criptogrfico mais usado hoje em dia. Parte da segurana de inmeras transaes depende deste mtodo e diversas pesquisas matemticas so supervisionadas para garantia da proteo do RSA. Afinal, a descoberta de uma fatorao eficiente acabaria com a confiabilidade deste mtodo. Portanto, todos esses fatos mostram o quanto as aplicaes dos conceitos matemticos influenciam na pesquisa e desenvolvimento da Criptografia.

185

Concluso
Depois de todo este estudo sobre primos e maneiras de determin-los podemos concluir, sem sombra de dvidas, que o Problema da Primalidade foi, direta ou indiretamente, um dos grandes incentivadores para as pesquisas em Teoria dos Nmeros. Como vimos, este um problema que envolve toda a lgebra elementar e, atualmente, relaciona uma rea to abstrata da Matemtica diretamente com a realidade, com questes de segurana e confidencialidade, devido s fortes aplicaes na Criptografia. No entanto, o Problema da Primalidade vai alm do que estudamos aqui. H alguns baseados em curvas elpticas17 alm do algoritmo APR, que usam conceitos muito avanados de lgebra. Alm de tudo isso, tambm no fizemos uma anlise plena do algoritmo AKS, apenas falamos o suficiente para mostrar que ele resolvia o problema da primalidade. Este trabalho simplesmente passa uma pequena ideia do vasto estudo feito sobre o Problema da Primalidade, mas est longe de abranger, plenamente, toda a teoria. Tambm fica clara a utilidade da Informtica para este problema em particular, mas, de fato, ela auxilia em diversas reas da Matemtica. Na verdade os avanos da Informtica foram extremamente incentivadores para o estudo da Teoria dos Nmeros. Enfim, com isso tudo, podemos constatar que a Matemtica, especialmente hoje em dia, no uma cincia esttica e parte da realidade. Muito pelo contrrio: por mais abstrato que seja o estudo de se esperar que haja ou possa ser desenvolvida uma utilidade direta com a realidade, principalmente com todos os recursos que temos hoje.

17

Confira [CRANDALL 2004]

186

Apndice
Muito foi discutido sobre anlise computacional, teste de primalidade, teoria algbrica e at sobre Criptografia. No entanto, nada efetivamente aplicado foi apresentado neste trabalho. A fim de compensar um pouco isso, pretendemos mostrar neste apndice uma implementao do algoritmo AKS, feita no MuPad. Ironicamente, j dissemos que os testes probabilsticos so os mais eficientes e que, na prtica, vale mais a pena implementar um deles do que o AKS. Em outras palavras, a implementao apresentada aqui na verdade no algo nem aconselhvel de se aplicar, mas vale lembrar que este trabalho visa um estudo matemtico dos testes de primalidade e, deste ponto de vista, o AKS sim o teste de primalidade mais importante. A implementao ser composta de quatro algoritmos. O primeiro a implementao do AKS efetivamente, o segundo um teste de potncia perfeita, o terceiro um teste de primalidade pela definio e o quarto o clculo do inverso mdulo m de dado nmero. Como j foi visto no captulo 9, os trs ltimos algoritmos apresentados aqui so necessrios para a plena implementao do AKS. Tambm necessrio um algoritmo para calcular potenciaes modulares, mas h uma funo nativa do MuPad que j faz isso, denominada powermod. Mais algumas consideraes: os algoritmos apresentados abaixo foram construdos de acordo com os algoritmos deste trabalho e, por meio de nosso pouco conhecimento em MuPad. Devido a isso, uma melhoria no desempenho deles bem provvel. Alm disso, alguns testes mostraro o quanto o AKS ineficiente, apesar de ser polinomial. Isso acontece porque o grau do polinmio que delimita o custo deste algoritmo muito alto. Assim, comparando com outros testes determinsticos, o AKS s levar vantagem com nmeros muito grandes, to grandes que o custo dos testes exponenciais ultrapasse o do AKS, o que com certeza, em algum momento acontece, j que a curvatura de funes exponenciais maior do que a de polinomiais na maior parte do domnio. Para uma comparao razovel, podem-se testar alguns nmeros usando o algoritmo AKS e o algoritmo A.3, o teste de primalidade baseado na definio. Infelizmente, ser necessrio um nmero grande demais para computadores comuns a fim de que o AKS mostre-se mais rpido do que o A.3. Enfim, deixando de lado todas estas ressalvas, vamos implementao. 187

A.1.

Implementao do algoritmo AKS


AKSTest := proc(n) begin if (n > 3) and is(n, Type::Odd) then for i from 2 to floor(log(2, n)) do if PerfectPowerTest(n, i) then return (FALSE) end_if; end_for; rVldPrime := 3; i := 1; lg4 := 4*ceil(log(2,n)^2); while (r<n) and (i<=lg4) do if WPrimalTest(rVldPrime) then if n div rVldPrime = 0 then return (FALSE) end_if; i:=1; while (i<=lg4) and (powermod(n, i, rVldPrime) <> 1) do i := i + 1 end_while; end_if; r := r+2; end_while; if r=n then return (TRUE) end_if; for i from 1 to rVldPrime do delete x; PTest1 := powermod(powermod((x + i),n, x^rVldPrime - 1), 1, n); PTest2 := powermod(powermod( x, n, x^rVldPrime - 1) +i, 1, n); if (PTest1 <> PTest2) then return (FALSE); end_if; end_for; return (TRUE); else return (bool((n>1) and (n<4))); end_if; end_proc

A.2.

Teste da Potncia Perfeita

PerfectPowerTest := proc(aPerfectP, nPerfectP) begin if is(sqrt(aPerfectP), Type::Integer) then return (TRUE); else 188

SPerfectP := 1; for iPerfectP from 1 to ceil(log(2,ceil(log(2, aPerfectP)/nPerfectP))) do TwP := 2^2^iPerfectP; TPerfectP := nPerfectP*powermod(S, n-1, TwP); TPerfectP := ModularInverse(TPerfectP, TwP); SPerfectP := (SPerfectP-(powermod(SPerfectP, nPerfectP, TwP)aPerfectP)*TPerfectP) mod TwP; end_for; return (bool(S^nPerfectP = aPerfectP)); end_if; end_proc
A.3. Teste de Primalidade Bruto

WPrimalTest :=proc(a) begin if is(i, Type::Odd) then for i from 3 to floor(sqrt(a)) step 2 do if a mod i = 0 then return (FALSE) end_if; end_for; return (TRUE); else return (bool(i=2)); end_if; end_proc
A.4. Clculo do inverso mdulo m

ModularInverse:= proc(a, b) begin [x1, y1] := [1, 0]; [x2, y2] := [0, 1]; r := b; q := a; while r > 0 do r1 := r; [q, r] := [q div r, q mod r]; if r>0 then [x,y] := [x1-q*x2,y1-q*y2]; [x1,y1] := [x2,y2]; [x2, y2] := [x, y]; q := r1; end_if; end_while; 189

if r1 = 1 then return (i) else return (0) end_if; end_proc

190

Bibliografia
AGRAWAL, M; KAYAL, N; e SAXENA, N. Prime is in P., ndia, Kanpur: IITK. Disponvel em: www.cse.iitk.ac.in/users/manindra/algebra/primality_original.pdf. Acesso em: 8 ago. 2006. 2002.

BANCO HSBC. Tutorial sobre criptografia e certificao digital. Disponvel em: http://www.hsbc.com.br/common/seguranca/artigo-seguranca-criptografia.shtml. Acesso em 20 out 2007. BARBOSA, JULIO C. Criptografia de Chave Pblica Baseada em Curvas Elpticas. Rio de Janeiro: UFRJ, 2003. BERNSTEIN, D. J. Proving Primality after Agrawal-Kayal-Saxena, verso 20030125 do preprint, disponvel em http://cr.yp.to/djb.html. COUTINHO, S. C. Nmeros Inteiros e Criptografia RSA, Srie Computao e Matemtica. Rio de Janeiro: IMPA, 2001.
Primalidade em Tempo Polinomial, Coleo Iniciao Cientfica. Rio de Janeiro: SBM, 2004.

CRANDALL, R.; POMERANCE, C. Prime Numbers: A computational Perspective. Berlin, Heidelberg, Nova York: Springer-Verlag, 2002 DIETZFELBINGER, M. Primality Testing in Polynomial Time, LNCS. Berlim: Springer, 2004. GIMENEZ, J. R. B. Implementao do Algoritmo RSA. Disponvel em http://unesp.br/~jroberto/rsa.pdf, 2004. Acesso em: 8 ago. 2006 GIMPS, Great Internet Mersenne Primes Search. Disponvel em: http://www.mersenne.org. Acesso em 15 mai. 2008. KNUTH, D. E. The Art of Computer Programming Vol. 2: Seminumerical algorithms. Boston: Addison-Wesley, 1998. KRANIAN, S; SOARES, M; GODINHO, H. Teoria dos Nmeros, 2. ed. Braslia: Editora Universidade de Braslia, 1999.

191

MONTEIRO, L. H. Jacy - Elementos de Algebra. Rio de Janeiro: IMPA, 1969. RIBENBOIM, P. Nmeros Primos: mistrios e recordes. Rio de Janeiro: IMPA, 2001. SCHOOF, R. Agrawal-Kayal-Saxena primality test. Disponvel em http://www.mat.uniroma2.it/~schoof/agrawalma.pdf, 2003. TRINTA, Fernando A. MACEDO, Rodrigo C. Um estudo sobre criptografia e certificao
digital. Trabalho apresentado Universidade Federal de Pernambuco. Recife, 1998.

VIVA O LINUX. O que criptografia. Disponvel em: http://www.vivaolinux.com.br/artigos.php?codigo=5715. Acesso em: 20 out 2007. VON ZUR GATHEN; GERHARD, J. Modern Computer Algebra, Cambridge: Cambridge University Press, 1999. WIKIPDIA. Mquina Enigma. Disponvel em: http://pt.wikipedia.org/wiki/Mquina_Enigma/. Acesso em: 18 nov. 2007

192

S-ar putea să vă placă și