0

我正在尝试使用字典查找:

  1. 使用两个嵌套的 while 循环创建一个字典,其键是两个立方体的总和。即遍历所有对 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
4

2 回答 2

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
于 2017-07-22T03:17:06.517 回答
0

通过创建嵌套的“三角形外部产品”,从一开始就很容易生成独特的值:
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))]
于 2017-07-22T04:08:46.163 回答