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.