擅长:python、mysql、java
<p>下面是一个使用预先计算的平方和缓存平方根的快速尝试。可能有许多数学优化。在</p>
<pre><code>def find_tri(h_max=10):
squares = set()
sq2root = {}
sq_list = []
for i in xrange(1,h_max+1):
sq = i*i
squares.add(sq)
sq2root[sq] = i
sq_list.append(sq)
#
tris = []
for i,v in enumerate(sq_list):
for x in sq_list[i:]:
if x+v in squares:
tris.append((sq2root[v],sq2root[x],sq2root[v+x]))
return tris
</code></pre>
<p>演示:</p>
^{pr2}$