今、私はこの方法で(プリミティブ)ピタゴラスのトリプルを計算します
def generateTriples(limit):
for n in xrange(1, limit):
if (n**2 + (n+1)**2 > limit):
break
for m in xrange(n+1, limit, 2):
if (n**2 + m**2 > limit):
break
if (gcd(n, m) > 1):
continue
yield (m**2 - n**2, 2*m*n, m**2 + n**2)
しかし、これが行うことは、すべてのレグが制限以下になるすべてのトリプルを出力することです。例えば:
for triple in generateTriples(25):
print triple
'''
(3, 4, 5)
(15, 8, 17)
(5, 12, 13)
(7, 24, 25)
'''
しかし、私がやりたいのは、足だけを制限するように変更することです. 斜辺は好きなだけ大きくすることができます - 私は min(leg1, leg2) を制限以下にしたいだけです。
また、非プリミティブを生成することも目指しています。つまり、すべての項で k によるスケーリングを意味します (これも min(leg1, leg2) が <= 制限ですが、この方法で重複が発生するのではないかと心配しています。
アドバイスをいただければ幸いです。