私はウィキペディアに記載されている三元ツリーアルゴリズムに従って、すべての互いに素のペアを生成することができますすぐに https://en.wikipedia.org/wiki/Coprime_integers定数空間を使用してすべてのペアを繰り返しますか?
を:
Start with two coprime branches: (2,1), (3,1), then iterate:
Branch 1: (2m-n,m)
Branch 2: (2m+n,m)
Branch 3: (m+2n,n)
使用スペースが生成された各ペアの3倍に成長するが(印刷されているとか、そうでなければ記憶されていないとか)。ここで
はHaskellでは解決策になるかもしれません: Generating sorted list of all possible coprimes
しかし、私は遅延評価や無限リストを持っていないのpythonで何か、を探していました。
ハスケルの問題と同じ制限が必要ですか? '各ペアの最初の要素は2番目の要素より小さくなければなりません。並べ替えは、ペアの要素の合計で昇順に行う必要があります。 2つの合計が等しい場合は、ペアの最初の要素によって決まります。もしそうなら、それらのペアをあなたのアルゴリズムで交換したいと思います。 Pythonには無限のジェネレータがありますが、これはおそらくあなたの「無限リスト」に似ています。そして、あなたは「3倍の成長」の問題を避けようとしているのですか、単純なPythonコードがほしいのですか? –
* "しかし、私は怠惰な評価や無限リストを持たないPythonで何かを探していました。" * Pythonには、潜在的に無限のシーケンスを生成するジェネレータ(遅延的に値を与える)と関数(特にitertoolsで)があります。 – Tagc
私はhaskellソリューションの制限を探していませんでした。そして、怠惰な/無限の用語にかかわらず、どんな慣用的なpython解決策も機能します。 – user318904