Hãy xem xét vấn đề sau:
Đặt là tập con hữu hạn của các số tự nhiên.
Đặt g c d ( s i , s j ) | s i , s j ∈ S , s i ≠ s j } trong đó g c d ( x , y ) là ước số chung lớn nhất của x và y
Tìm các yếu tố tối đa của .
Vấn đề này có thể được giải quyết bằng cách lấy ước số chung lớn nhất của mỗi cặp bằng thuật toán của Euclid và theo dõi số lớn nhất.
Có cách nào hiệu quả hơn để giải quyết điều này?
3
Bạn có thể muốn xem Phần 3.3 về Khai thác Ps và Q của bạn: Phát hiện các khóa yếu phổ biến trong các thiết bị mạng (Heninger et al, Usenix Security 2012). Chúng mô tả một thuật toán để tính toán các gcd của cặp đôi trong gcd, trong một cài đặt nhất định, sử dụng các cây sản phẩm và các cây còn lại. Tôi không biết nếu nó kéo dài đến vấn đề của bạn, mặc dù.
—
DW
Bạn đã thử bất cứ điều gì với các yếu tố chính?
—
Ryan
Giả sử tất cả các số tương đối nguyên tố nhưng khó tính (ví dụ: mỗi bằng p i q i cho các số nguyên tố phân biệt lớn p i , q i ). Sau đó, có vẻ khó tránh việc kiểm tra tất cả các GCD cặp. (Nói tôi nói với bạn rằng sau khi kiểm tra tất cả các cặp nhưng ( s n - 1 , s n ) rằng tất cả các GCD theo cặp là 1. Làm thế nào bạn có thể đoán g c d ( s n - 1 , s n ) mà không tính toán nó?)
—
usul
Liên kết của @usul DW chính xác là vấn đề đó. Một con số khổng lồ, ví dụ một tỷ, khóa mã hóa nên là sản phẩm của hai số nguyên tố riêng biệt. Nhưng chúng tôi nghi ngờ rằng một số khóa mã hóa có một yếu tố chung (đó sẽ là gcd của cả hai khóa, làm cho cả hai yếu tố dễ dàng). Thuật toán đó cho phép bạn tìm các khóa có hệ số chung mà không cần tính n (n-1) / 2 gcd cho n = 1 tỷ.
—
gnasher729