Fatoração de Fermat e Pollard
Fatoração de Fermat e Pollard
Fatoração de Fermat e Pollard
Orientação
Profa. MSc. Adriana Betânia de Paula Molgora
Dourados - MS
10 de dezembro de 2009
UNIVERSIDADE ESTADUAL DE MATO GROSSO DO SUL
COORDENAÇÃO DO CURSO DE MATEMÁTICA - UNIDADE DE DOURADOS
Dourados - MS
Uma Introdução aos Métodos de Fatoração de Inteiros de
Fermat e Pollard
Banca Examinadora:
Orientador
Examinador 1
Examinador 2
Dourados.
Dezembro de 2009.
Aos meus pais Augusto e Rosa Maria.
Dedico
Agradecimentos
Agradeço a Deus por este momento em minha vida. Agradeço aos meus pais pelo incentivo
e a todos que contribuı́ram para realização deste trabalho.
i
Resumo
A fatoração de números inteiros é um assunto antigo, porém de muito interesse. Esse
interesse deve-se ao fato de que a segurança de alguns sistemas criptográficos como o
RSA (Ronald Rivest, Adi Shamir e Leonard Adleman) depende da ineficiência dos
métodos de fatoração existentes. Existem diverssos métodos de fatoração de inteiros,
dentre esses, os métodos de Fermat e Pollard. Esse trabalho tem o objetivo de descrever
os métodos de Fermat, Pollard-Rho e Pollard p − 1.
ii
Sumário
Introdução 1
1 Embasamento teórico 3
1.1 Existência da fatoração . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 Divisão De Números Naturais . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.3 Máximo Divisor Comum . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.4 Congruência . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.5 Algoritmo de Euclides . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.6 Unicidade da fatoração . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.7 Teto e piso de um número . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2 Método de Fermat 10
2.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.2 Fatoração de inteiros pelo Método de Fermat . . . . . . . . . . . . . . . . . 11
2.3 Demonstrando o Método de Fermat . . . . . . . . . . . . . . . . . . . . . . 13
2.4 Algoritmo de Fermat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Conclusão 25
iii
Introdução
1
2, é realizada uma descrição do método de Fermat. O capı́tulo 3, apresenta o método
de Pollard Rho enquanto o capı́tulo 4 descreve o método de Pollard p-1. Além disso, no
capı́tulo 5 é realizada uma discussão sobre os métodos de fatoração de inteiros apresenta-
dos.
2
Capı́tulo 1
Embasamento teórico
Introdução
Esse capı́tulo apresenta a fundamentação matemática envolvida no funciona-
mento dos métodos de Fermat, Pollard-Rho e Pollard p-1. Informações adicionais podem
ser encontradas em [1] e [4].
3
distintos. Assim, foi provado que existe uma fatoração em primos para qualquer número
inteiro n ≥ 2.
4
Dado a, b ∈ Z, dizemos que d ∈ Z é máximo divisor comum entre a e b se
(i)d ≥ 0;
(ii) d|a e d|b e
(iii) se d0 é um número inteiro tal que d0 |a e d0 |b, então d0 |d.
Observações
a) d e d1 são máximos divisores comuns entre a e b, então d = d1 . De fato,
como d|d1 e d1 |d e, ainda, são ambos positivos, concluı́mos que d = d1 ;
b) Se a = b = 0, então d = 0, como é óbvio;
c) Se a = 0 e b 6= 0, então d = |b|;
d) Se d é máximo divisor comum entre a e b, então d tambem é máximo divisor
comum entre a e −b, −a e b e, ainda, entre −a e −b.
Notação: Indicaremos por mdc(a, b) o máximo divisor comum entre a e b que
já sabemos ser único, quando existe. A proposição a seguir nos garante sua existência em
todos os casos.
Exemplos:
a) Se a = 4 e b = 6 então
mdc(a, b) = mdc(4, 6) = 2 pois 2|4 e 2|6.
b) Se a = 15 e b = 5 então
mdc(a, b) = mdc(15, 5) = 5 porque 5|15 e 5|5.
c) Se a = 25 e b = 26 então
mdc(a, b) = mdc(25, 26) = 1 pois 1|25 e 1|26.
Proposição 1: Quaisquer que sejam a, b pertencentes aos inteiros, existe d
pertencente aos inteiros que é o máximo divisor comum de a e b.
Demonstração:
Levando em conta as observações acima podemos nos limitar ao caso em que
a > b e b > 0.
Seja L = ax + by | x, y ∈ Z. Evidentemente existem elementos estritamente
positivos em L (faça-se, por exemplo, x = y = 1). Seja d o menor desses elementos.
Mostremos que d é o máximo divisor comum entre a e b.
5
(i) d é obviamente maior ou igual a zero;
(ii) como d ∈ L, então existem x0 , y0 ∈ Z de maneira que
d = ax0 + by0
a = (ax0 + by0 )q + r
ou, ainda
o que vem mostrar que r ∈ L. Sendo r ≥ 0 e levando em conta que a escolha do elemento
d a conclusão é que r = 0. Daı́ ficamos com a = dq o que mostra que d|a.
Analogamente se prova que d|b;
(iii) Se d0 |a e d0 |b, como d = ax0 + by0 , então é claro que d0 |d.
N ota : Se d = mdc(a, b), então se verificou, na demonstração acima, que
d = ax0 + by0 onde x0 , y0 ∈ Z. Os elementos x0 e y0 que satisfazem tal identidade não
são únicos. Uma tal identidade recebe o nome de identidade de Bezout em Z para os
elementos a e b.
1.4 Congruência
Definição:
Seja m > 1 um número inteiro. Dado a, b, ∈ Z, dizemos que a é côngruo a b,
módulo m, se, e somente se, m|(a − b).
Notação: a ≡ b(mod m).
Exemplos:
6
a) 21 ≡ 1(mod 5) pois 21 − 1 = 20 e é divisı́vel por 5.
b) 100 = 1(mod 9) pois 100 − 1 = 99 que é divisı́vel por 9.
Propriedades:
a) a ≡ a(mod m), para todo a ∈ Z, pois a − a = 0 e 0 é divisı́vel por m.
b) a ≡ b(mod m) implica b ≡ a(mod m).
c) a ≡ b(mod m) e b ≡ c(mod m) implica a ≡ c(mod m).
Provemos. Como m|(a − b) e m|(b − c), então m|[(a − b) + (b − c)], ou seja,
m|(a − c). Isto equivale à tese.
d) a ≡ b(mod m) e c ≡ d(mod m) implica a + c ≡ b + d(mod m).
e) a ≡ b(mod m) implica ac ≡ bc(mod m) para todo c ∈ Z.
f) a ≡ b(mod m) implica ar ≡ br (mod m), para todo r ≥ 1.
Para r = 1 a implicação é evidente.
Suponhamos ar ≡ br (mod m). Então ar+1 ≡ abr (mod m). Por outro lado,
de a ≡ b(mod m), segue que abr ≡ br+1 (mod m). Juntando as duas conclusões tiramos
ar+1 ≡ br+1 (mod m).
7
(2) Se a|c e b|c, então ab|c.
Prova:
1o Sejam a e b inteiros relativamente primos, isto é, tal que mdc(a, b) = 1.
Pelo Algoritmo de Euclides Estendido existem inteiros m e n tais que
ma + nb = 1
mac + nbc = c
É óbvio b|nbc. Mas, por hipótese, b|ac. Logo b|(mac = ncb) = c. Portanto,
b|c.
2o Pode ser provado a partir do 1o . De fato, se a|c pode-se escrever c = at,
para algum inteiro t. Mas, b|c, e como mdc(a, b) = 1, segue da 1a afirmação que b|t.
Assim, t = bk para algum k. Portanto,
c = at = a(bk) = (ab)k
onde h ≥ 1, p1 < p2 < p3 < ... < ph são números primos e e1 , ..., eh são inteiros positivos.
8
1.7 Teto e piso de um número
O teto de um número x ∈ R, é dado pelo menor inteiro maior que x. Notação: dxe
Exemplo:
a) x = 2, 35
dxe=d2, 35e=3
b) x = 3, 01 dxe=d3, 01e=4
O piso de um número x ∈ R, é dado pelo maior inteiro menor que x. notação:bxc
Exemplo:
a) x = 2, 35 bxc=b2, 35c=2
b) x = 3, 01
bxc=b3, 01c=3
9
Capı́tulo 2
Método de Fermat
2.1 Introdução
Fermat foi um dos poucos matemáticos amadores famosos. Filho de um rico comerciante
de couro, pôde se dedicar completamente aos estudos. Por influência de sua mãe, descen-
dente de uma famı́lia de juristas, estudou leis na Universidade de Orleans e formou-se
em advocacia. Trabalhou durante toda sua vida na corte de justiça de Toulouse. Foi
nomeado juiz e ocupava os seus momentos de folga em diversos lazeres, entre os quais a
poesia e a Matemática[6].
Seu interesse pela matemática iniciou-se em 1629 com o estudo dos trabalhos
de Apolônio (matemático grego, 260 A.C.) sobre curvas planas. Trocava correspondência
com os maiores matemáticos da época, como Torricelli, Roberval, Huyghens e Pascal, e,
dessa forma relatava suas descobertas. Jamais publicou seus trabalhos de nenhuma outra
forma mas o conteúdo das cartas de Fermat é atualmente incluı́do em todos os textos
usuais de teoria dos números [6].
Seu interesse na teoria dos números surgiu após ler o livro Aritmética de Dio-
fanto (matemático grego, 200 A.C.) e alguns dos problemas propostos por Fermat, nesta
área, eram tão difı́ceis que somente muitos anos mais tarde foram provados. Um desses
problemas afirmava que “todo número inteiro pode ser escrito como a soma de, no máximo,
10
quatro quadrados”e foi provado em 1770, pelo matemático francês Lagrange [6].
p √
x = n + y2 = n
11
x = 1160
√
y= x2 − n
√
y= 11602 − 1342127
x = 1161
√
y= x2 − n
√
y= 11612 − 1342127
y = 76, 11. Como y ainda não é um valor inteiro vamos continuar com o método, incre-
mentando um ao valor de x, deste modo:
x = 1162
√
y= x2 − n
√
y= 11622 − 1342127
y = 90, 09, como o método ainda não chegou a seu propósito deve-se prosseguir
incrementando um ao valor de x, então
x = 1163
12
√
y= x2 − n
√
y= 11632 − 1342127
x = 1164
√
y= x2 − n
√
y= 11642 − 1342127
y = 113
n = x2 − y 2
n = (x + y)(x − y)
n = (1277)(1051) = 1342127
13
(n + 1)
menor que 2
. Então n é composto e encerra-se a execução do método antes de chegar
(n + 1) (n+1)
ax= 2
. Se n é primo então verifica-se que o único valor de x possı́vel é 2
.
Supondo que n pode ser fatorado como n = ab, onde b ≥ a queremos obter
inteiros positivos x e y de forma que n = ab = (x + y)(x − y) = x2 − y 2 .
Como x − y ≤ x + y toma-se a = x − y e b = x + y.
a = x − y (∗)
b = x + y (∗∗)
Então de (∗)e(∗∗) temos
a + b = 2x
a+b
x= 2
b − a = 2y
b−a
y= 2
b+a 2 b−a 2
( ) −( ) = ab = n
2 2
Assim x e y são inteiros, mas ( b+a
2
) e ( b−a
2
) estão escritos como fração. Mas n
é ı́mpar, por hipótese, então como a e b são fatores de n, temos que (a + b) e (a − b) são
pares logo ( b+a
2
) e ( b+a
2
) são inteiros.
Se n = ab onde, a = x − y e b = x + y com b ≥ a, então se n for primo teremos
n = 1 · n ou seja a = 1 e b = n assim o único valor possı́vel para x é x = ( n+1
2
).
Se n é composto e a = b então obtemos o resultado desejado na primeira etapa,
pois n seria um quadrado perfeito. Supomos então a 6= b e que 1 < a < b < n. Assim o
b+a n+1
teste acaba quando forem satisfeitas as desigualdades bnc ≤ 2
≤ 2
.
b+a
como 2
≥| n | então
b+a N +1
2
< 2
⇔ a + b < N + 1 = ab + 1
b+a N +1
2
< 2
⇔ a + b − b − 1 < ab + 1 − b − 1
b+a N +1
2
< 2
⇔ a − 1 < ab − b
b+a N +1
2
< 2
⇔ a − 1 < b(a − 1)
b+a N +1
2
< 2
⇔1<b
14
Isto mostra que vale a desigualdade original. Como 1 < a < b vale por hipótese,
b+a n+1
está provado que 2
< 2
.
√ (a+b)2
Como bnc ≤ n, temos que verificar que n ≤ 4
é verdadeiro. Mas
(b+a)2 (b−a)2 (a+b)2
4
−n= 4
, é sempre não negativo, então temos que 4
− n ≥ 0.
Voltando ao método de Fermat, x é iniciado com o valor bnc e vai sendo
incrementado de uma em uma unidade, até que
(a+b)
x= 2
y 2 = ( a+b
2
)2 − n = ( a−b
2
)2
Esse método não envolve multiplicação nem divisão, mas o problema é a
enorme quantidade de execuções requeridas.
Atualmente esse método não é muito utilizado, porém ele contém a idéia base
de um dos mais poderosos algoritmos usados até hoje para fatorar números com grandes
fatores primos, que é o metodo Crivo Quadrático.
A seguir, apresentamos o algoritmo do método de Fermat que recebe um inteiro
positivo ı́mpar n e retorna o fator de n ou uma mensagem indicando que n é primo.
15
Capı́tulo 3
Este método foi inicialmente chamado de “Método de Monte Carlo” por sua natureza
pseudo-randônica. Agora é mais conhecido como Método Rho [5].
Para fatorar um número n pelo método de Pollard Rho, supõe-se que n é um
inteiro grande, composto, e que p é seu menor divisor primo. O objetivo é escolher inteiros
x0 , x1 , ..., xs de forma que estes inteiros tenham resı́duos não negativos mı́nimos distintos,
módulo n. Usando argumentos probabilı́sticos, é provável que este seja o caso quando δ
√
é grande comparado a n, e os números são escolhidos randomicamente [5].
Depois de encontrarmos xi e xj , onde 0 ≤ i < j ≤ δ tal que xi ≡ xj (mod p)2
mas xi 6= xj (mod n), temos que mdc(xi − xj , n) pode ser encontrado rapidamente usando
o algoritmo de Euclides. Entretanto, encontrar mdc(xi − xj , n) para cada par (i, j) com
0 ≤ i < j ≤ δ requer que seja encontrado O(δ 2 ) máximos divisores comuns. Em seguida,
mostra-se, como calcular os xi e, logo em seguida como reduzir o número de vezes em que
o algoritmo de Euclides precisa ser usado [5].
Na prática, iniciamos procurando os números inteiros xi e xj . Começaremos
com um valor inicial x0 , que, é escolhido aleatoriamente, e uma função polinomial F(x)
arbitrária com coeficientes inteiros e grau maior que 1. Calculamos os termos xs , com
s = 1, 2, 3, ..., usando a definição recursiva
16
O polinômio f (x) deve ter a propriedade que a sequência x0 , x1 , ..., xs , ... se
comporta como uma sequência aleatória. O exemplo a baixo mostra como é gerada esta
sequência.
Exemplo 1:
Seja n = 8051. Supomos x0 = 2 e f (x) = x2 + 1.
Então temos que se
f (xs+1 ) ≡ f (x)(mod(n));
f (x0+1 ) ≡ f (x2 + 1)(mod(n))
f (x1 ) ≡ f (22 + 1)(mod(8051))
f (x1 ) ≡ f (5)(mod(8051))
f (x1 ) ≡ 5;
f (x1+1 ) ≡ f (x1 )(mod(n))
f (x2 ) ≡ f (52 + 1)(mod(n))
f (x2 ) ≡ f (25 + 1)(mod(8051))
f (x2 ) ≡ f (26)(mod(8051))
f (x2 ) ≡ 26;
f (x2+1 ) ≡ f (x2 )(mod(n))
f (x3 ) ≡ f (262 + 1)(mod(n))
f (x3 ) ≡ f (676 + 1)(mod(n))
f (x3 ) ≡ f (677)(mod(8051))
f (x3 ) ≡ 677;
f (x3+1 ) ≡ F (x3 )(modn)
f (x4 ) ≡ F (6772 + 1)(modn)
f (x4 ) ≡ F (458329 + 1)(mod8051)
f (x4 ) ≡ F (458330)(mod8051)
f (x4 ) ≡ 7474;
f (x4+1 ) ≡ f (x4 )(mod(n))
f (x5 ) ≡ f (74742 + 1)(mod(n))
f (x5 ) ≡ f (55860676 + 1)(mod(8051))
17
f (x5 ) ≡ f (55860677)(mod(8051))
f (x5 ) ≡ 2839;
f (x5+1 ) ≡ f (x5 )(mod(n))
f (x6 ) ≡ f (28392 + 1)(mod(8051))
f (x6 ) ≡ f (8059921 + 1)(mod(8051))
f (x6 ) ≡ f (8059922)(mod(8051))
f (x6 ) ≡ 871;
Assim encontramos os valores x1 = 5, x2 = 26, x3 = 677, x4 = 7474, x5 =
2839, x6 = 871, e assim por diante.
Temos pela definição recursiva de xs , que se
xi ≡ xj (mod(p)),
onde p é um inteiro positivo, então
xi+1 ≡ f (xi ) ≡ f (xj ) ≡ xj+1 (mod(p)).
Temos que, se xi ≡ xj (mod(p)), então essa sequência xs se torna periódica
módulo p com um perı́odo j − i. Então, xq ≡ xr (mod(p)) sempre que q ≡ r(mod(j-i))
que é no mı́nimo igual a i, então xs ≡ x2s (mod(p)).
Para acharmos um fator de n, devemos encontrar o mdc(x2s − xs , n) para
s = 1, 2, 3, .... Sabemos que esse fator de n foi encontrado quando aparecer um valor s
para o qual 1 < x2s − xs < n. Podemos perceber que é provável que tal s seja encontrado
√
próximo a p.
O polinômio f (x) = x2 + 1 é frequentemente escolhido para gerar a sequência
de inteiros x0 , x1 , x2 , ..., xs ,..., pois um polinômio linear f (x) = ax + b não será aleatório
o suficiente para esse propósito. Além disso, o valor inicial x0 = 2 tambem é muito usado.
Esta escolha de valor inicial e de polinômio produz uma sequencia que se comporta como
uma sequência aleatória quando este método é usado.
Exemplo 2:
Encontrar um valor não trivial de n = 8051 usando o método Rho com valor
inicial x0 = 2 e o polinômio f (x) = x2 + 1. No exemplo anterior encontramos x1 =5, x2
=26, x3 =677, x4 =7474, x5 =2839, x6 =871.Usando o algoritmo de Euclides segue que
18
mdc(x2 − x1 ,8051)=mdc(26 - 5,8051)=mdc(21,8051)=1 e mdc(x4 − x2 ,8051)=mdc(7474
- 26,8051)=mdc(7448,8051)=1. No entando, um fator não trivial de 8051 é encontrado
no próximo passo, pois mdc(x6 − x3 ,8051)=mdc(871 - 677,8051)=97. Portanto, 97 é um
fator de 8051.
Pode-se ver que este método é chamado de método Rho, observando o com-
portamento da sequência xi onde x0 = 2 e xi+1 = x2 i+1 = (x2 i + 1)(mod 97), i ≥ 1.
Podemos observar que existe uma parte não periódica, que ocorre antes da periodicidade
e é a cauda do Rho, e uma parte periódica que é o laço.
O método Rho é prático para a fatoração de inteiros com fatores primos mode-
radamente grandes. Em 1980, R. P. Brent propôs uma mudança na forma do algoritmo.
Para tentar evitar armazenar valores dos x0i s, ele sugeriu o cálculo das diferenças:
x1 − x3 ; x3 − x6 ; x3 − x7 ; x7 − x12 ; x7 − x13 ; x7 − x14 ; x7 − x15 ;
resumindo:
n−1
x2 − xj , 2 n +1
- 2n −1
≤ j ≤ 2n +1
- 1.
O importante é a diferença entre coordenadas, onde aumenta um a cada vez.
A menor coodernada é mantida até garantir que saia do intervalo.
Muitos mdc’s tem que ser calculados, normalmente milhares ou mais. Temos
então uma economia substancial de tempo se for tomado o produto de, vamos dizer, dez
valores sucessivos de (xi −xj )(modn) e se depois for calculado o mdc daquele produto com
n. Se for verificar que o mdc é n, volta-se aqueles últimos dez valores e será feito o mdc
de n com cada um deles. No entanto se n divide o produto de dez diferenças sucessivas,
ele normalmente divide exatamente uma destas diferenças.
Em geral, pode-se esperar que o número mı́nimo de ciclos necessários esteja
próximo da raiz quadrada do menor primo dividido por n. Isto porque a sequência dos
xi normalmente se comporta como se eles fossem aleatórios.
A probabilidade de que não haja repetições entre os primeiros t termos da
sequência é então
p
. . . p−(t−1)
p−1 p−2
. p p
e esta probabilidade diminui aproximadamente 50 porcento
√
quando t se aproxima de p.
19
Capı́tulo 4
o que implica que p divide 2k! − 1 , de forma que M = (2k! − 1) − nt para qualquer
t inteiro. Assim p divide M , já que p divide ambos, 2k! − 1 e n .
Agora para encontrar um divisor de n é preciso somente calcular d = mdc (M, n).
Isto pode ser calculado usando o algoritmo de Euclides.
20
Para que um divisor d, não seja um divisor trivial é preciso que M não seja
nulo. Este é o caso quando o próprio n não divide 2k − 1, o que é provável quando n tem
divisores primos grandes.
Na prática, para se usar esse método devemos calcular 2k! módulo n, com
k = 0, 1, 2, ... . Podemos fazer isso através de exponenciação modular. Para encontrar
o menor valor de 2k! módulo n fixamos r1 = 20! e usaremos a seguinte sequência de
cálculos:
21
Para fatorar o número 5157437 usando o método p-1, encontramos sucessiva-
mente rk , que é o menor resto positivo de 2k! módulo 5157437 para k = 1, 2, 3, ..., como
no exemplo anterior. Calculamos mdc(rk − 1, 5157437) em cada passo. Para encontramos
um fator de 5157437 precisaremos de 9 passos pois mdc(rk − 1, 5157437) = 1 para k = 1,
2, ...,8. Mas mdc(r9 − 1, 5157437) = mdc(4381439, 5157437) = 2269, assim temos que
2269 é um divisor de 5157437.
Na prática não se sabe o quão próximo de n precisamos chegar antes de encon-
tar o primeiro valor primo. Como não queremos que todos sejam encontrados precisamos
verificar periodicamente o valor de mdc(ck! − 1, n) onde c é um inteiro positivo e primo
com relação a n. Se for 1, precisamos continuar com o teste. Se for n, então já passamos
todos os divisores de n, sendo nescessário tentar um valor diferente de c, ou tentar um
algoritmo diferente. Se não for nem 1 nem n então encontramos o divisor não trivial que
procuramos [5].
Este método nem sempre funciona. Mas, como o método não depende da base
escolhida, podemos encontrar fatores de outros inteiros usando bases diferentes de 2, desde
que tais bases sejam relativamente primas a n [5].
Na prática, a primeira tentativa de fatorar um inteiro grande n é fazer divisão
por tentativas por todos os primos menores que n, ou então aplicar o método de Fermat,
se já sabemos que existem fatores próximos da raiz de n [5].
22
Capı́tulo 5
Os métodos Rho e P-1 são usados para encontrar valores primos de tamanho intermediário
valores de até 105 . Depois desses métodos falharem é que devemos usar métodos mais
poderosos como por exemplo o método Crivo Quadrático. [5]
O método de fatoração de Fermat tem algumas caracterı́sticas importantes. A
principal delas é que as iterações não envolvem multiplicação ou divisões, de forma que
eles tem um tempo de execução extremamente rápido. O problema é o enorme número
de execuções requeridas. O método de Fermat funciona na direção oposta à da divisão
por tentativas. O método de divisão por tentativas começa procurando fatores pequenos
e continua até a raiz quadrada de n, ja no método de Fermat começa procurando fatores
√
próximos à raiz quadrada de n e continua procurando fatores menores que n [5].
Atualmente este método não é muito usado a menos que se saiba que o número
a ser fatorado tem dois fatores que estão relativamente próximos à sua raiz quadrada, mas
ele contém a idéia por trás de um dos mais poderosos algoritmos usados hoje para fatorar
números com grandes fatores primos, o método do Crivo quadrático [5].
Os métodos de Pollard Rho e p-1 são chamados de algoritmos probabilı́sticos,
pois fazem escolhas aleatórias durante o processo de fatoração existindo uma probabilidade
23
de fatorar ou não fatorar um dado número. O método Rho é prático para a fatoração
de inteiros com fatores primos moderadamente grandes. Em geral, pode-se esperar que o
número de ciclos necessários esteja em torno da raiz quadrada do menor primo dividindo
n [5].
24
Conclusão
25
Referências Bibliográficas
[3] MILIES, Cézar Polcino ; COELHO, Sonia Pitta. Números: Uma Introdução à
Matemática - 3a edição - São Paulo: Editora da Universidade de São Paulo, 2001.