Algoritmos de Fatoração Baseados em Diferenças de Quadrados

Propaganda
Algoritmos de Fatoração Baseados em
Diferenças de Quadrados: Algoritmo de
Fermat e Crivo Quadrático
Annanda Sousa e Jéssica Silvério
Orientação: Luis Menasché Schechter
Índice
1. Fatoração por diferença de quadrados
2. Algoritmo de Fermat
3. Crivo Quadrático
3.1 Números Suaves
3.2 Crivo de Erastóstenes
4. Tabela de testes comparativos
Fatoração por diferença de quadrados
• Baseada na identidade matemática:
x² - y² = (x+y)(x-y) = N
• Fatorar N: achar os números x e y, tal que (N + y²)
é um quadrado perfeito. Ao calcular (x+y) e (x-y)
encontro os fatores do número.
• Não é trivial procurar diretamente x e y
Algoritmo de Fermat
• É eficiente quando:
▫ Os fatores do números são próximos
▫ O número tem um fator primo não muito menor que
a raiz quadrada dele
• Entrada: número inteiro positivo e ímpar N
• Saída: fatores (x+y) e (x-y) de N ou uma indicação
de que N é primo
Algoritmo de Fermat
• Passo 1: x recebe o valor da parte inteira da raiz
de N
1.1: Se N for igual a x², então N é um quadrado
perfeito. Pare e retorne x
• Passo 2: Some 1 a x e calcule
• Passo 3: Repita o passo 2 até encontrar um valor
inteiro para y, significando que N tem fatores
(x+y) e (x-y); ou até que x=(N+1)/2, significando
que N é primo
Generalização da Ideia
• k*N = a² - b²
• Passos para encontrar a e b
1. Construção de relação: Encontrar vários
inteiros
com a propriedade de
que a quantidade
tem apenas
fatores primos pequenos.
2. Eliminação: Selecionar um produto
de alguns
tal que todo fator primo
presente no produto tenha expoente par.
Então esse produto
é um
quadrado perfeito.
Generalização da Ideia
3. Cálculo do mdc: Seja
o mdc d = mdc(N,a-b). Já que
. Calcule
há uma chance razoável de que d seja um fator não
trivial de N.
Crivo Quadrático
• Utilizado para encontrar de modo eficiente vários
números ai>
tal que cada a² (mod N) é Bsuave.
• Entrada: N a ser fatorado, base de fatores primos
• Saída: fatores de N
Números suaves
• Um número n é definido como B-suave se todos os
seus fatores primos são menores ou iguais a B,
sendo B um número natural.
• Exemplo: 2, 3, 4, 5, 6, 8, 9, 10, 12, 15, 16, 18, 20, 24
e 25 são 5-suaves, pois todos os seus fatores
primos são menores ou iguais a 5.
Crivo de Eratóstenes
• Serve para encontrar números primos dentro de
um intervalo
• Utilizado para construir a base de fatores primos
que é entrada do Crivo Quadrático
• A ideia é construir uma tabela com todos os
números inteiros do intervalo desejado e, ao longo
dos passos do algoritmo, ir eliminando números
que não são primos. No final, restará apenas os
primos na tabela inicial.
Crivo de Eratóstenes - Exemplo
• Determinar os números primos entre 2 e 30
• Resultado: Os números primos entre 2 e 30 são 2,
3, 5, 7, 11, 13, 17, 19, 23 e 29
Fatoração utilizando o Crivo Quadrático
• Etapa 1: Realizar a construção de relação, crivando
os números da lista com a utilização da base de
fatores primos.
• Construção da lista do Crivo Quadrático
1.1: Escolher a variando de ([√N]+1) até 2* ([√N]+1)
1.2: Calcular, para cada
• Os números utilizados serão os que foram
totalmente reduzidos (números suaves para a base
de fatores dada)
Fatoração utilizando o Crivo Quadrático
• Etapa 2 : Realizar a etapa de eliminação utilizando
uma eliminação gaussiana módulo 2.
Fatoração utilizando o Crivo Quadrático
• Etapa 3: Seja
um produto em
que todo primo tem potência par
• Seja
o produtos dos
correspondentes aos
• Fazer b =
• Testar se
. Se for, abandonar essa solução.
Senão, calcular d= mdc(N, a-b)
• Se d diferente de 1 e d diferente de N, então d é um
fator não trivial de N; O outro fator é obtido
dividindo N por d
Crivo Quadrático - Exemplo
• Entrada: N= 221; base de fatores = {2,3,5,7}
• Etapa 1:
Crivo Quadrático - Exemplo
• Etapa 1:
Crivo Quadrático - Exemplo
• Etapa 1:
Crivo Quadrático - Exemplo
• Etapas 2 e 3:
• Possibilidade 1:
d= mdc (221,13) = 13 -> 1º fator de 221
e = 221/13 = 17
• Possibilidade 2:
d= mdc(221,234)=13 ->1º fator de 221
e = 221/13 = 17 -> 2º fator de 221
Comparação entre os algoritmos
Comparação entre os algoritmos
Comparação entre os algoritmos
Download