我剛剛開始學習Python,並開始做一些問題,只是爲了幫助建立我的技能,但是我很困擾這個問題。其中正方形是兩個平方和的數字列表
製作一個包含所有1000以下正整數的列表,其正方形可以表示爲兩個平方的和(即,整數p,其中p^2 = m^2 + n^2,其中m和n是大於0的整數。)
提示:有幾種方法。你可能會發現有一個所有的平方數列表是有幫助的。 in運算符可能很有用。
下面是我想出來的,到目前爲止的代碼:
numbers=xrange(1001)
numbers_squared=[x**2 for x in numbers]
a=[]
for x in numbers_squared:
for b in numbers_squared:
if (x+b)**.5 <= 1001:
a.append(x+b)
print a
我不用它的問題是,Python的需要多年才能做這些計算(我已經等了大約十分鐘,它仍然打印號碼)。如何解決這個問題的任何提示將非常感激。
p.s.主要觀點是使用列表。此外,提示將比解決方案本身更受讚賞。
謝謝!
那麼,作爲一個,你可以將第二個循環限制在x以下的數字。例如「8 ** 2 = 64」不能表示爲大於「64」的任何數字的總和。 –
你給了多少這樣的數字? – inspectorG4dget
我在想,但我不知道如何用Python編寫。感謝提示:D – Dizzle