Considere o seguinte problema:
Deixe ser um subconjunto finito dos números naturais.
Seja | onde é o maior divisor comum de e g c d ( x , y ) x y
Localize o elemento máximo de .
Esse problema pode ser resolvido usando o maior divisor comum de cada par usando o algoritmo de Euclides e mantendo o controle do maior.
Existe uma maneira mais eficiente de resolver isso?
3
Você pode dar uma olhada na Seção 3.3 de Minerando seus Ps e Qs: detecção de chaves fracas generalizadas em dispositivos de rede (Heninger et al, Usenix Security 2012). Eles descrevem um algoritmo para calcular MDCs pares em MDCs, em uma determinada configuração, usando árvores de produtos e árvores restantes. Mas não sei se isso se estende ao seu problema.
—
DW
Você já tentou alguma coisa com fatorações primárias?
—
22714 Ryan
Suponha que todos os números sejam relativamente primos, mas difíceis de fatorar (por exemplo, cada é igual a para números primos distintos grandes ). Parece difícil evitar a verificação de todos os GCDs aos pares. (Diga que eu lhe disse que depois de verificar todos os pares, mas que todos os GCDs em pares são Como você adivinhoup i q i p i , q i ( s n - 1 , s n ) 1 g c d ( s n - 1 , s n ) sem computação lo)?
—
usul
O link do @usul DW é exatamente esse problema. Um grande número, digamos um bilhão, de chaves de criptografia deve ser produto de dois primos distintos. Mas suspeitamos que algumas chaves de criptografia tenham um fator primordial em comum (que seria o MDC de ambas as chaves, facilitando o fator). Esse algoritmo permite encontrar as chaves com fator comum sem calcular n (n-1) / 2 gcd para n = 1 bilhão.
—
precisa saber é o seguinte