Розглянемо наступну проблему:
Нехай є кінцевим підмножиною натуральних чисел.
Нехай | s_i, s_j \ in S, s_i \ neq s_j \} де gcd (x, y) - найбільший спільний дільник x і y
Знайти максимальний елемент .
Цю проблему можна вирішити, взявши найбільшого спільного дільника кожної пари за допомогою алгоритму Евкліда та відстежуючи найбільшу.
Чи існує більш ефективний спосіб вирішення цього питання?
3
Ви можете ознайомитись з розділом 3.3 Видобуток ваших психічних питань: виявлення широких слабких ключів у мережевих пристроях (Heninger та ін, Usenix Security 2012). Вони описують алгоритм для обчислення парних gcd's в gcd, у певних умовах, використовуючи дерева продуктів та залишки дерев. Я не знаю, чи поширюється це на вашу проблему.
—
DW
Ви щось пробували з простими чинниками?
—
Райан
Припустимо, що всі числа є відносно простими, але важкодоступними (наприклад, кожен дорівнює для великих чітких простих чисел ). Тоді здається важким уникнути перевірки всіх парних GCD. (Скажіть, я скажу вам, що після перевірки всіх пар, але що всі парні GCD є Як ви могли здогадатися не обчислюючи його?)
—
usul
Посилання @usul DW - саме ця проблема. Величезна кількість, скажімо, мільярд, ключів шифрування повинні бути продуктами двох чітких простих. Але ми підозрюємо, що деякі ключі шифрування мають спільний основний фактор (який був би gcd обох клавіш, що робить обидва простими для фактора). Цей алгоритм дозволяє знаходити ключі із загальним коефіцієнтом без обчислення n (n-1) / 2 gcd's для n = 1 мільярд.
—
gnasher729