私はPythonを学び始めたばかりで、スキルを磨くためにいくつかの問題を解決し始めましたが、この質問にはかなりこだわっています。
1000までのすべての正の整数を含むリストを作成します。その二乗は、2つの二乗の合計として表すことができます(つまり、p ^ 2 = m ^ 2 + n ^ 2である整数p。ここで、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がこれらの計算を行うのに何年もかかることです(私は約10分待っていましたが、まだ数値を出力しています)。これを解決する方法についてのヒントをいただければ幸いです。
ps主なポイントはリストを使用することです。また、ヒントはソリューション自体よりも高く評価されます。
ありがとう!