考虑以下问题:
令是自然数的有限子集。
令 | 其中是和最大公约数
找到的最大元素。
这个问题可以通过使用Euclid算法获取每对最大公约数并跟踪最大对数来解决。
有更有效的解决方法吗?
3
您可能需要看一下挖掘P和Q:在网络设备中检测广泛的弱密钥的第3.3节(Heninger等,Usenix Security 2012)。他们描述了一种在特定设置下使用乘积树和余数树计算 gcd中成对gcd的算法。不过,我不知道它是否扩展到您的问题上。
—
DW
您是否尝试过使用质分解进行任何操作?
—
Ryan
假设所有数字都是相对质数但很难(例如,对于大的不同质数每个等于)。那么似乎很难避免检查所有成对的GCD。(假设我告诉您,在检查了所有对之后,除了,所有成对的GCD都是如何计算而不计算出?)
—
usul 2014年
@usul DW的链接正是这个问题。十亿个加密密钥应该都是两个不同素数的乘积。但是我们怀疑某些加密密钥具有共同的主要因素(这将是两个密钥的gcd,这使得两者都很容易分解)。该算法可让您找到具有公因数的密钥,而无需为n = 10亿计算n(n-1)/ 2 gcd。
—
gnasher729