def sum_of_squares(n):
for i in range(1, n):
for j in range(1, n):
if n == i*i + j*j:
return True
break
else:
return False
-2
A
答えて
2
より効率的な方法は、そのようにそれを行うには、次のようになります。
import math
def is_sum_of_squares(n):
s=set()
if 2*int(math.sqrt(n/2.0))**2==n:
return True
for i in range(1,int(math.sqrt(n)+1)):
if n-i**2 in s:
return True
else:
s.add(i**2)
return False
ここでは、反復は1回だけ行い、平方根まで行います。最初のif
は、for
ループではカバーされていないため、n
が2つの等号(8 = 4 + 4など)の合計であるかどうかをチェックします。
0
すべての値をテストし、最初のtryが等しくない場合は戻らないでください。
def sumofsquares(n):
for i in range(1, n):
for j in range(1, n):
if n == (i*i) + (j*j):
return (true)
return (false)
あなたもPOWを使用することがあります。
pow(i, 2) + pow(j, 2)
か:
(i**2) + (j**2)
0
を、nが何であるかに関係なく、関数が最初のチェックの後に返されますされますので、それは正しくありません。あなたのような2つのループのうちのreturn False
を置く必要があります。
def sumofsquares(n):
for i in range(1, n):
for j in range(1, n):
if n == ((i * i) + (j * j)):
return True
return False
jは私から始まる場合、それは良いだろう:
def sumofsquares(n):
for i in range(1, n):
for j in range(i, n):
if n == ((i * i) + (j * j)):
return True
return False
関連する問題
- 1. SQLコードでエラーが見つかりませんか?
- 2. 私のコードでエラーが見つかりません:C++
- 3. 以下のコードでエラーが見つかりません
- 4. xcodebuild - 'コード署名エラー:プロビジョニングプロファイルXが見つかりません'
- 5. コード署名エラー:xcode 7.3のプロビジョニングプロファイルが見つかりません
- 6. コードxsltエラー:ファイルが見つかりません
- 7. コード内に構文エラーが見つかりません
- 8. Swift [エラー]:オブジェクトが見つかりません。 (コード:101、バージョン:1.12.0)
- 9. オブジェクトが見つかりません。エラー
- 10. MicrosoftAjax.jsエラーが見つかりません}
- 11. キーが見つかりませんエラー
- 12. javacriptエラーが見つかりません
- 13. アセンブリコード - エラーが見つかりません
- 14. エラー "auth_password_changeが見つかりません"
- 15. モジュールが見つかりません:エラー:
- 16. モジュールが見つかりませんエラー:
- 17. プロローグパズル、エラーが見つかりません
- 18. エラーshfmtが見つかりません
- 19. csc.exeエラーが見つかりません
- 20. エラーorg.apache.xerces.jaxp.DocumentBuilderFactoryImplが見つかりません
- 21. htmlが見つかりませんエラー
- 22. vcvarsall.batエラーが見つかりません
- 23. エラー:uglifyjsが見つかりません
- 24. エラー「が見つかりませんmscoreei.dll」
- 25. モジュールが見つかりません:エラー
- 26. "EGLConfigが見つかりません!"エラー
- 27. サーブレットが見つかりませんエラー
- 28. HttpWebResponseエラーが見つかりません
- 29. エラーが見つかりません
- 30. エラー:モジュールが見つかりません "
と思われますが、どうやって試してみませんか?また、 'return'の後の' break'も役に立ちません。そして、効率のために 'sqrt(n)'までループすることもできます。 – Julien
なぜそれが正しいか尋ねていますか? **テストしてください!** – jonrsharpe
いいえ、 '1 * 1 + 1 * 1'をテストした後に戻ります。なぜ見えますか? –