2017-07-22 6 views
0

ながら辞書を使用して、2を使用して検索ラマヌジャン番号:ループは、ネストされた、そのキーを2つの立方体の合計である辞書を作成しながら、デバッグコード:私は見つけようとしているループ

  1. は2を使用します。これは、すべてのペアiとjを反復し、大きすぎるまでi^3 + j^3を計算します。

    2.新しいi^3 + j^3を計算するたびに、既にエントリがあるかどうかを確認し、確認します。

    3.キューブの合計とキューブの合計がすでに同じ値になっているため、新しいペアの数値が見つかりました。

ここに私のコードがあります:私のコードが間違っていることを理解してください。

dit = dict() 
j = 1 
i = 1 
while i < 10: 

    while j < 10: 
     summ = i**3+ j**3 

     if summ in dit: 

      print(summ, (i,j), dit.get(summ)) 

     else: 
      dit [summ] = (i,j) 
    j = j +1 
    print(dit) 

j = 2 
i = i + 1 

答えて

0

whileループ内から変数を変更していないため、条件が変更されることはありません。あなたはあなたの押し込みを少し変更して、それが機能するようにする必要があります。

dit = dict() 
j = 1 
i = 1 
while i < 10: 

    while j < 10: 
     summ = i**3+ j**3 

     if summ in dit: 

      print(summ, (i,j), dit.get(summ)) 

     else: 
      dit [summ] = (i,j) 
     j = j +1 
     print(dit) 

    j = 2 
    i = i + 1 
+0

ありがとうございます!それは私をたくさん助けました。 :) –

0

そのためだけに入れ子になって「trianglular外積」を作成することで、最初から一意の値を生成するのは簡単:
for a in range(1, c//2+1) for b in range(c//2,c)

c = 5 
d = [(a**3 + b**3, (a, b)) for a in range(1, c//2+1) for b in range(c//2,c)] 

# test for uniqueness 

len(d) == len(set(d)) 
True 

d 
[(9, (1, 2)), 
(28, (1, 3)), 
(65, (1, 4)), 
(16, (2, 2)), 
(35, (2, 3)), 
(72, (2, 4))] 

d.sort() 
d 
[(9, (1, 2)), 
(16, (2, 2)), 
(28, (1, 3)), 
(35, (2, 3)), 
(65, (1, 4)), 
(72, (2, 4))] 
+0

ありがとうございました! –

+0

あなたがそれを好きなら答えを投票するのにもっと役立つ – f5r5e5d

関連する問題