次の問題を検討してください。
ましょは自然数の有限サブセットです。
ましょうgでのCのD (sはI、S J) | sのiが、S J ∈ S 、S I ≠ S J } 、G 、C 、D (X 、Yは)の最大公約数であり、X及びY
の最大要素を求めます。
この問題は、ユークリッドのアルゴリズムを使用して各ペアの最大公約数を取り、最大のものを追跡することで解決できます。
これを解決するより効率的な方法はありますか?
3
PsとQsのマイニング:ネットワークデバイスでの広範囲にわたる弱いキーの検出(Heninger et al、Usenix Security 2012)のセクション3.3をご覧ください。それらは、製品ツリーと剰余ツリーを使用して、特定の設定で gcdのペアワイズgcdを計算するためのアルゴリズムを記述します。それがあなたの問題にまで及ぶかどうかはわかりませんが。
—
DW
素因数分解で何かを試しましたか?
—
ライアン14
すべての数値が比較的素数であるが因数分解が困難であると仮定します(たとえば、大きく異なる素数p i、q iの場合、各はp i q iに等しい)。次に、すべてのペアワイズGCDをチェックすることを避けるのは難しいようです。(たとえば、(s n − 1、s n)のすべてのペアをチェックした後、すべてのペアワイズGCDが1であることを伝えます。計算せずにg c d (s n − 1、s n)をどのように推測できますか?)
—
usul 2014
@usul DWのリンクはまさにその問題です。膨大な数、たとえば10億という暗号化キーはすべて、2つの異なる素数の積でなければなりません。しかし、一部の暗号化キーには共通の素因数があると思われます(これは両方のキーのgcdであり、両方を因数分解しやすくします)。そのアルゴリズムにより、n = 10億に対してn(n-1)/ 2 gcdを計算せずに、共通因子を持つキーを見つけることができます。
—
gnasher729