• Nenhum resultado encontrado

Considerações e Melhoramentos da Etapa de Crivagem

3.2 Método do “Crivo Quadrático” (“QS”)

3.2.5 Considerações e Melhoramentos da Etapa de Crivagem

O processo de crivagem descrito em §3.2.2 merece-nos agora alguns comentários de índole um pouco mais técnica, até porque não é necessário fazer uma implementação séria do mesmo para se perceber que há ainda uma larga margem para a introdução de melhoramentos. Uma observação importante acerca do exposto na referida secção prende-se com o facto de que a operação aritmética maioritariamente utilizada neste processo é sem dúvida a multiplicação de inteiros. Ora, esta operação é de um modo geral mais lenta que a adição, pelo que quando trabalhamos com números muito grandes a sua utilização pode levar a uma ligeira mas ainda assim importante perda de celeridade no processo de crivagem.

O problema anterior pode ser facilmente resolvido efectuando uma pequena mudança na forma como assinalamos no referido processo o facto de um dado valor de f ser divisível

por um determinado primop da base de factores. Assim, supondo que f (xi) é um valor def

3. CRIVO QUADRÁTICO

suave e aplicando logaritmos a ambos os termos da equação (2.9), obtém-se a igualdade

log2|f (xi)| = j−1

X

k=0

ei,klog2pk,

que lhe é equivalente. Deste modo, poderíamos com efeito modificar o processo de crivagem descrito em §3.2.2 por forma a utilizar não o produto corrente Πi anteriormente associado a

cada inteiroximas sim uma “soma corrente” Σi, inicialmente igual a zero, e adicionar o valor

de log2pk a Σi sempre que se verificasse f (xi) ≡ 0 (modpmk) para algum m ≥ 1. Assim, o

critério para identificar no final do processo de crivagem um determinado valorf (xi) como

sendo suave passaria a ser nãof (xi) = Πi como anteriormente, mas sim

Σi= log2|f (xi)|.

Esta abordagem acarretaria a vantagem de que conseguiríamos efectivamente substituir todas as multiplicações por somas, e também de que os valores com que teríamos de trabalhar na etapa de crivagem seriam agora muito mais pequenos. No entanto, como é natural não podemos trabalhar com os valores exactos de cada um dos logaritmos dos primos da base de factores à excepção de log22, pelo que somos obrigados a utilizar apenas aproximações de cada um dos termos log2pk. Deste modo, e por ser mais fácil trabalhar com números

inteiros, é costume utilizar-se as aproximações de cada um destes logaritmos ao inteiro mais próximo, tomando log22 = 1, log23 ≈ 2, log25 ≈ 2, e assim sucessivamente. Deste modo, facilmente se conclui que na prática esta abordagem dá também azo à introdução de erros de arredondamento no processo de crivagem, pelo que assim não podemos esperar que no final desta etapa os valores suaves def verifiquem Σi = log2|f (xi)| mas sim

Σi ≈ log2|f (xi)|, (3.18)

uma noção que formalizamos mais à frente. A título de exemplo desta modificação atente-se na Tabela 3.5, que representa o resultado da aplicação deste processo às últimas cinco linhas da Tabela 3.3. Como facilmente se verifica, os valores de Σ843 e Σ845 estão suficientemente

próximos dos valores limiteL843= blog2|f (843)|c e L845= blog2|f (845)|c para que possamos

concluir quef (843) e f (845) são valores suaves, enquanto que os valores de f (842), f (844) e f (846) podem ser ignorados, uma vez que 9 6≈ 14, 2 6≈ 14 e 0 6≈ 15.

Naturalmente, o processo descrito anteriormente é pouco rigoroso, uma vez que está sujeito aos erros de arredondamento anteriormente referidos. Assim, é possível que alguns valores def que verifiquem (3.18) mas que não sejam suaves possam também ser identificados

como tal. Deste modo, é certamente conveniente verificar através da divisão exaustiva todos os valores def que no final do processo de crivagem verifiquem (3.18), por forma a confirmar

3.2. MÉTODO DO “CRIVO QUADRÁTICO” (“QS”) xi f (xi) 2 4 3 9 27 81 5 25 125 625 7 49 11 121 17 289 19 Σi Li 842 19215 2 4 6 9 9 14 843 20900 1 2 4 6 9 13 13 14 844 22587 2 2 14 845 24276 1 2 4 7 11 15 15 15 846 25967 0 15

Tabela 3.5: Crivagem com aproximações logarítmicas, baseada na Tabela 3.3

ou não a sua suavidade(6). Convém também estabelecer um critério para seleccionar quais os valores de f que devem ser sujeitos a esta segunda análise, uma vez que, em termos

computacionais, a utilização do critério (3.18) implica que sejam estabelecidos um limiar e uma dada tolerância para este efeito. No entanto, antes de estabelecer estes valores é também conveniente debruçarmo-nos sobre um outro aspecto da etapa de crivagem.

Como referido em §3.2.2, para crivar o polinómio f de forma rigorosa é também

necessário considerar todas as potências de cada primo da base de factores para as quais

f (x) ≡ 0 (mod pm) (m ≥ 2)

admite alguma solução congruente com algum valor de S. Ora, param ≥ 2, resolver este tipo

de congruências implica utilizar um procedimento adicional, como o descrito em §3.1.2, im- plicando também que temos de percorrer todo o intervalo de crivagem à procura do primeiro inteiroxinas condições anteriores. Assim, se a base de factores, e, de um modo geral, os val-

ores def , forem muito grandes, todos estes procedimentos podem levar a perdas importantes

de rapidez no processo de crivagem. Deste modo, e uma vez que, tendo em conta a discussão anterior, o processo de crivagem com logaritmos já não é rigoroso, podemos aproveitar este facto para introduzir mais alguma falta de rigor, deixando de crivar com potências de primos e estabelecendo o limiar e a tolerância anteriormente referidos de tal forma que possamos ainda assim identificar a grande maioria dos valores suaves de f . Para o efeito, suponhamos

que após dividir um determinado valor f (xi) por todos os primos da base de factores se

verifica que f (xi) =ri· j Y k=0 pδi,k k comri≤ (Bmax) 2 e δi,k =      1 , sepk| f (xi) 0 caso contrário (3.19)

Tendo em conta esta equação, se para um determinado primo p da base de factores e um

determinado m ≥ 2 se verifica pmkf (x

i) verifica-se automaticamente pm−1kri. Logo, ri

(6)

Note-se que a utilização da divisão exaustiva não significa em princípio um encargo computacional acrescido, uma vez que se espera que a grande maioria dos números seja ignorada após este processo. Deste modo, na prática só se aplica a divisão exaustiva a uma percentagem muito pequena de valores de f .

3. CRIVO QUADRÁTICO

“contém” na sua factorização em primos todas as potências de primos da base de factores que dividemf (xi), potências essas que pretendemos ignorar na etapa de crivagem. Para além

disso, o facto de se verificarri ≤ (Bmax)2 implica que f (xi) é divisível por, no máximo, um

primo não constante da base de factores. Ora, tendo em conta este raciocínio e aplicando logaritmos à equação (3.19), verifica-se que se

log2|f (xi)| ≤ 2 log2Bmax + j

X

k=0

δi,klog2pk

então ou f (xi) é suave relativamente a B ou é divisível por exactamente um primo não

pertencente a este conjunto. Assim, com este raciocínio conseguimos já definir o limiar e a tolerância a impor para a selecção def (xi) para uma verificação posterior, mesmo ignorando

a crivagem por potências dos primos da base de factores: podemos seleccionar para o efeito qualquer valor def (xi) para o qual no final do processo de crivagem se verifique

Σi≥ log2|f (xi)| − 2 log2Bmax > blog2|f (xi)| − 2 log2Bmaxc ,

onde agora Σi é obtido a partir do valor inicial somando as aproximações dos logaritmos de

cada um dos primos da base de factores que dividef (xi), ignorando as suas potências. Para

finalizar este raciocínio convém ainda realçar outros dois aspectos fundamentais:

(a) Embora o raciocínio apresentado se aplique, teoricamente, à utilização do “crivo quadrático” na factorização de números de qualquer dimensão, na factorização de números relativamente pequenos utilizam-se normalmente intervalos de crivagem e principalmente bases de factores também muito pequenas. Deste modo, há uma maior probabilidade de que os valores do polinómio f sejam divisíveis por um único primo

maior que Bmax, e, consequentemente, de que sejam seleccionados muitos valores def

para uma segunda análise. Por esta razão, é habitual substituir o limiar da equação anterior porLi= blog2|f (xi)| −T log2Bmaxc, escolhendo T de acordo com [27].

(b) O raciocínio anterior implica que qualquer valor para o qual se verifique Σi > Li pode

ser suave, mas não nos garante que todos os números suaves verifiquem esta condição no final do processo. Deste modo, é possível que sejam ignorados alguns valores suaves importantes (por exemplo, valores suaves divisíveis por uma potênciapm> (B

max)2).

O ponto (b) pode sugerir que o raciocínio anterior pode causar perda de demasiados valores suaves. No entanto, à medida que o tamanho dos inteiros a factorizar cresce, cresce também o limite Bmax, e diminuem consequentemente as hipóteses de que qualquer valor de f se

enquadre na condição exemplificada ou noutras do mesmo género. Deste modo, verifica-se ser preferível em aplicações práticas do “crivo quadrático” utilizar esta mesma abordagem.