擅长:python、mysql、java
<p>像这样?在</p>
<pre><code>hypothenuse=10000
thesets=[]
for x in xrange(1, hypothenuse):
a=math.sqrt(hypothenuse**2-x**2)
if(int(a)==a):
thesets.append([x,a])
print "amount of sets: ", len(thesets)
for i in range(len(thesets)):
print thesets[i][0],thesets[i][1], math.sqrt(thesets[i][0]**2+ thesets[i][1]**2)
</code></pre>
<p>编辑:更改后,您也可以打印集合(这个方法是在O(n)中,我想这是最快的方法?)注:如果需要集合的数量,则每个集合被给出两次,例如:15*<em>2=9</em>*2+12*<em>2=12</em>*2+9**2</p>
<p>如果你不知道你的密码是不是都比12小?或者你想知道写12*<em>2=a</em>*2+b**2的可能性吗?在</p>
<p>如果你想要所有的可能性,我会编辑一点代码</p>
<p><strong>对于a*<em>2+b</em>*2=c**2的所有可能性,其中c<;抵押权</strong>(不确定这是否是您想要的):</p>
^{pr2}$
<p>这在O(n**2)中求解,如果假设值=15,你的解甚至不起作用,你的解给出:</p>
<p>(3、4、5)
(5、12、13)
套数:2</p>
<p>正确的是:
三
[(5,12),(3,4),(6,8)]</p>
<p>既然5*<em>2+12</em>*2=13*<em>2,3</em>*2+4*<em>2=5</em>*2,6*<em>2+8</em>*2=10**2,而你的方法没有给出第三个选项?
编辑:把numpy改为math,我的方法也没有给出倍数,我只是说明了为什么我得到3而不是2,(这3个不同的解是问题的不同解,因此3个都是有效的,所以你的解是不完整的?)在</p>