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