다음 문제를 고려하십시오.
허락하다 자연수의 유한 부분 집합이어야합니다.
허락하다 | 어디 가장 큰 제수입니다 과
최대 요소 찾기 .
이 문제는 Euclid의 알고리즘을 사용하여 각 쌍의 최대 공약수를 취하고 가장 큰 알고리즘을 추적하여 해결할 수 있습니다.
이것을 해결하는 더 효율적인 방법이 있습니까?
3
네트워크 장치에서 P 및 Q 마이닝 : 광범위한 약한 키 감지의 3.3 섹션 (Heninger et al, Usenix Security 2012)을 살펴볼 수 있습니다. 그들은 쌍으로 gcd를 계산하는 알고리즘을 설명합니다.
—
DW
gcd는 특정 환경에서 제품 트리와 나머지 트리를 사용합니다. 그래도 문제가 확장되는지 모르겠습니다.
소인수 분해를 시도해 보셨습니까?
—
Ryan
모든 숫자가 상대적으로 소수이지만 고려하기 어렵다고 가정합니다 (예 : 각각 동일하다 큰 별개의 소수 ). 그런 다음 모든 쌍 GCD를 확인하지 않는 것이 어려워 보입니다. (모든 쌍을 확인한 후 모든 쌍별 GCD가 . 당신은 어떻게 추측 할 수 있습니까계산하지 않고?)
—
usul
@usul DW의 링크는 바로 그 문제입니다. 10 억 개에 달하는 엄청난 수의 암호화 키는 모두 두 개의 고유 한 소수의 제품이어야합니다. 그러나 일부 암호화 키에는 공통 요소가 있다고 생각합니다 (두 키의 gcd이므로 둘 다 쉽게 인수 할 수 있습니다). 이 알고리즘을 사용하면 n = 10 억의 n (n-1) / 2 gcd를 계산하지 않고도 공통 인자를 가진 키를 찾을 수 있습니다.
—
gnasher729