Osasco - 2008
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;
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
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.
Implementao do algoritmo AKS............................................................................ 188 Teste da Potncia Perfeita.......................................................................................... 188 Teste de Primalidade Bruto ....................................................................................... 189 Clculo do inverseo mdulo m .................................................................................. 189
............................................................................................................................. 191 6
Bibliografia
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.
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].
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-
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
1.1.
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
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:
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
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)
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
Seja
a Z : a > 1,
ento pi
existe
uma
nica
k (i ) > 0
forma
de
escrever
como
primo e
para qualquer
i { ,2,..., n} e 1
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
Suponhamos qualquer
que
exista
outra Assim,
fatorao temos
de que
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.
15
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.
1.1.2 pi divide 1, o que uma contradio, pois pi > 1 j que primo. Logo, h infinitos
nmeros primos.
para qualquer 1 i n . Mas, como MDC (a, b ) = 1 , ento pik ( i ) / b . Logo, pelo teorema 1.1.1 |
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,
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
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
18
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
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 .
Como p primo, temos que MDC ( p, a ) = 1 . Logo, pela proposio 1.2.1 temos que
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 ) .
Demonstrao
Temos dois casos para a: 1. p / a. | Neste caso, pelo teorema 1.2.1, a p 1 1(mod p ) , logo
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
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
) (
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)
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.
24
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
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
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.
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.
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
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
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
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.
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
30
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 . ~
& a , aA ~
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 )
31
(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 .
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
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:
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
(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.
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:
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.
a * c = b * c a * c * c 1 = b * c * c 1 a * e = b * e a = b . 35
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.
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.
Demonstrao
1. Vale a reflexiva, pois a * b 1 H a * b 1 a * a 1 = e H . Existe elemento simtrico, pois se
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.
G ,* um grupo. H
37
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
proposio 1.4.2, A =
1 i r
Ua
A=
a
1i r
(Z ,)
* 11
e o conjunto
38
(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
( )
( )
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
a A , definamos o conjunto
( )
( )
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
39
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)
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
grupo A finito, ele ser cclico caso exista um a A tal que ord A a = A .
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
(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,
( ( ))
multiplicao.
41
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.
Esta proposio pode ser provada por induo. Por conseguinte, passaremos para as ltimas demonstraes deste captulo.
42
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
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
( ( ))
( )
(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
p 2 | p k , k > 1 e, portanto, (a + p )
p 1
( )
( )
( )
44
( ( ) )
( )
( )
( )
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
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
( ) (
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 + p
k 1
.n
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
)}
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
(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
pP 2 n
p ( )
kp
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
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
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
( )
p ( )
kp
, com
pP 2 m
p ( )
= (2m )
# r
) , logo
m C 2 m (2m )
# r
).
Em particular, 2 n 2n 2
((
))
# r
n 2 log 2 2n 2 log 2 2n 2
( )
((
( )
#
( )
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 #
n = 1 temos que 2 12
= 2# = 2 .
( )
48
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.
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
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
Se a, p Z tal que p um primo mpar, ento a conjunto de resduos quadrticos mdulo p tem
p 1 2
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
temos que g
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
1(mod p ) , do contrrio a
p 1 2
temos que a
a ( )(mod p ) . p
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
Iremos agora introduzir o necessrio para falarmos da Reciprocidade Gaussiana. Apresentaremos algumas definies que usaremos apenas nesta seo.
51
}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
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 ) .
R = k p (a ) ,
Demonstrao
{p r : r R} H p
j que
{p r : r R} T = .
tal 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
52
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
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
p 1 2
b ( )(mod p ) . Logo, p
( 1)k ( b ) 1(mod p ) ,
p
b b k ( ) = ( 1) , j que ( ) = 1 . p p
53
Demonstrao
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) =
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
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
4. a = 7 : e
iH n
n =
i.a
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
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
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
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
( 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
Demonstrao
n m Caso MDC (m, n ) > 1 ento ( ) = ( ) = 0 e a soluo trivial. Assumamos ento que m n
.(
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,
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
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
58
( A, ) um grupo a;
( A,,)
a b = b a, a , b A ;
2. 3.
( A,,)
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
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.
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
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
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.
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.
61
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.
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
feito nas sees 1.5 e 1.6, definimos as operaes + e . em fcil notar que
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
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,
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 .
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
polinmio
de
em
A),
uma
soma
formal
finita:
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.
(f
+ g )( x ) = ( a n + bn ) x n + ( a n 1 + bn 1 ) x n 1 + ... + ( a1 + b1 ) x + ( a 0 + b0 ) , onde
aj
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
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.
a
i+ j =k
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 )( x ) = ( a n + bn ) x n + ( a n 1 + bn 1 ) x n 1 + ... + ( a1 + b1 ) x + ( a 0 + b0 ) , onde
aj
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
( 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:
a
i + j =k
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
( f .g ) ( f ) + ( g ) ;
5. Se ( f ) = 0 , ento f constante;
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
(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
( )= 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.
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
tal
que
r ' < g
se
r' 0 A .
Portanto,
diviso. Provemos agora a unicidade da diviso. Para tanto, suponhamos que f = g.q1 + r1 e
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.
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
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
71
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
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 . 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 ] ,
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
77
do carter prtico desta seqncia, mas sim, a generalizaremos. Para tanto, apresentamos uma definio preliminar:
P+ D P D so suas razes. , = 2 2
+ = P = Q D =
Com isso, definiremos agora a generalizao da sequncia de Fibonacci, as Sucesses de Lucas:
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
n n e Vn = Vn (P, Q ) = n + n sucesses de
Demonstrao
Primeiramente, notemos que U 0 = U1 =
0 0 = 0 e V0 = 0 + 0 = 2 ; alm disso,
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 =
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 =
( + )
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.
80
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
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
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:
8.
9.
84
10.
11.
(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.
n 1 e que a identidade vlida para todo inteiro entre 1 e n e provemos para n + 1. Pela
Logo,
U n+1 =
e,
como
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 )
( 1) C
i i =0
mi
( 1)
i =0
k i
k 1
( 1) C (
i =0
mi + ( 1)k 2i mi m (k i ) . Finalmente,
( 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
10.
Un =
mpar, e a =
86
n i 1 i n 2i C n i 1 ( XY ) ( X + Y ) i
U mq
Disso, temos
q i m m) mq mq ( m m ) mi ( = C q1i 1 ( ) i =1 i
q 1
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
13.
14. 15.
4
V p P(mod p ) ; U n divide U kn ;
87
16.
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.
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
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.
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
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,
p 1
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
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
b (i )
, pi primo e b(i ) IN .
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
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.
21.
, (n )
, (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 )
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 )
no
segundo
| U p e (i )
i
U p e (i ) | U
i
, (n )
pois
, ( pi ) = pi (
no terceiro
caso,
|U
, pi e ( i )
pi e (i )
|U
, (n )
Portanto,
como
92
MDC p i
e (i )
, pj
e( j )
, isto , n | U
, (n )
. Alm disso,
, (n )
| U
, (n )
(n )
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:
Demonstrao
22.
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.
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.
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.
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
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
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
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
p | U e ( p +1) , logo 95
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
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.
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
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
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
3.4.
Classificao de Custos
Existem vrias classificaes para os custos de algoritmos. Para dado custo O( g ( x )) , as
O(g(x))
Designao
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
3.5.
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
2 2 4 2 8 2
32 2
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
5. 6.
7.
Se i mpar ento r
(r.m) mod n
m i
8. Fim_Enquanto
9. Retorne r
Fim_Programa
104
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
})
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.
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
b particular.
Digamos, ento, que obtemos o resto ri e pelo o que foi discutido podemos escrev-lo como
ri 1 = xi 1 a + yi 1 b
ri = ri 2 qi ri 1 .
Substituindo
ento,
nesta Isolando
equao,
os
resultados obtemos,
ri = ( xi 2 .a + yi 2 .b ) ( xi 1 .a + yi 1 .b ).qi .
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
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
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.
(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)
Se r > 0 ento
q
Fim_Se
r1
15.
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
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:
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.
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.
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:
Lema 4.7.1: Sejam g(x) um polinmio com coeficientes inteiros, e a Z . Tm-se que ( x )
g ' ( ) = 0 , ento: q( ) = 0 .
2
112
Demonstrao
Seja
g ( x ) = f ( x ) f ( ) f ' ( ) ( x ) .
Ento
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 ' ( )
(mod p k )
f ( ) 0(mod p k ) f ' ( ) inversvel mdulo p.
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 ' ( )
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
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,
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
( ) a ).T (mod 2 )
Sn a
Retorne (R = 0)
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
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.
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
)(
hipteses tambm so vlidas para j + 1. Portanto por induo as trs hipteses valem para qualquer valor que S assuma durante o algoritmo.
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
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
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
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.
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
b 4
b
Fim_Se
b 2
(b, c )
Retorne s b
(c mod b, b )
Fim_Enquanto
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.
3.9.
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
1.
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.
121
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).
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
123
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.
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.
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.
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.
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
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)
( )
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
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.
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
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.
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
Assim, q / |
129
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 .
130
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
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
p 1 2
a ) = 1 . Para tanto, usando as regras apresentadas na seo 4.8, podemos dizer que N
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
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
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
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
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 (
10 11
134
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
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
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
isto
2k x = e m + x .
e|m
Mas
m = 2k 1 x ,
ento
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.
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.
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
e(i )
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
Demonstrao
D D ) , j que ( ) 0 ; N N
N = pi
i =1
e(i )
1 2
s 1
(p
i =1
e ( i ) 1 i
s 1 1 2 N 1 + . pi i =1 2
1 1 p +1 1 + = i , 2 pi 2 pi
138
4N D < N 1 N ( ) . 5 N
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
Se N = p i
i =1
e(i )
D ) , o que contraria a N
e( p )
indica
mximo
expoente
tal
que
p e( p )
divida
N;
conclumos
que
139
que (
Demonstrao
Se MDC ( N , D ) = 1 o resultado trivial, pois (
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 )
Ento N | V( N +1) 2 q .
Demonstrao
Notemos que
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
f (i )
i IN . Se:
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 ;
Ento N primo.
Demonstrao
Tomemos i inteiro tal que 1 i s e U = U (Pi , Qi ) . Pela proposio 6.2.4, temos que
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
12
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
f (i )
i IN . Se:
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 ;
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
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
i ( p) / |
qi
f (i )
| i ( p ) , donde qi
D D | p ( ) e, por conseguinte, F | p ( ) . p p
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
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 (
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
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.
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
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
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
( )
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 =
2k 1
, isto ,
2k
Mn |V
= 22
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
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,
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
148
Se a 2
.d
Demonstrao:
Por hiptese, a 2
.d
1(mod N ) ento N | a 2
+1 p | a2
1 . Isto ,
1, N ) = 1 .
((
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 .
.d
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
contradio.
149
.d
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
.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
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
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
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
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
tem 1
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;
(i )
), 1 i w
para x Z com
(i )
)e
N = pi
i =1
(i )
Demonstrao:
(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
v (n )1
1(mod N ) .
Demonstrao:
como
n
i +1
um
pseudoprimo
forte
na
base
a,
para
algum
i,
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
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 :
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 . | |
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:
(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)
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
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
(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
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
menor do que
N . 4
(N ) e, por 4
156
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 =
5.2.
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
Fim_Enquanto
resp = 0 157
s a b
r
randmico(2, n - 2)
a u (mod n )
-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
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
n 1 2
14
160
Demonstrao:
vale
n 1 2
primeira
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 .( ) 1(mod n ) . Para / n
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
( ) tal que ( nb ) = 1 . Pelo teorema 1.3.4 (teorema chins dos restos), existe
1
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
a .( ) 1(mod n ) . / n
Dado n um inteiro positivo, seja a um nmero aleatrio tal que 1 < a < n 1 . Se a
n 1 2
1 . 2k
Demonstrao:
n 1 2
Se n for composto temos, pelo lema 8.1.3, que o conjunto de solues tal que
a
n 1 2
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
162
8.2.
8.2.1.
1. Para i de 1 at k faa 2. 3. a
Se a
Aleatrio( 2, n 2)
n 1 2
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
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
16
Algoritmo 7.2.1
164
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 =
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 )!
(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
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
= 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
(x + b)
n i +1
= x+b
ni
(x
ni
+b .
) ( )
n
Portanto, x + b
ni
(x
ni
+b
ni p
i j
Enunciaremos, agora, o teorema central do AKS. Sua demonstrao ser feita por etapas.
167
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
r 1 ; ord r n
4.
(x + b)
Z [x ] para todo b S = x n + b em rn x 1
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
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
B = x m1 + b, x m 2 + b,..., x md + b , onde b S .
Z p [x ] x 1
r
de W e
U (Z r ) de Y. p, n
essencial para todo o restante da demonstrao. Para demonstr-la definamos uma funo
e : S a N tal que
m1 m2
e (b )
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
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
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
169
Para
provar
essa
distino,
tomemos
e1 : S a N
e2 : S a N
tal
que
( ) ( )
( )
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
= ~ x mi n k pl e2
elementos distintos do grupo Y, temos que para um inteiro tal que 1 r 1 , vale
( )
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
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
conseguinte, n i p j
pertence ao subgrupo
n , p Z r . No entanto d =
n, p =
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 )
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
v = u + qr
para algum
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
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
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
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
2
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
173
9.3.
Anlise 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
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
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]
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
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
((
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.
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
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
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.
181
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;
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
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 )
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 )
. 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
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.
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
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.
A.2.
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
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