Python - 查找^ 3 + b ^ 3 = c ^ 3的整数解

时间:2015-10-02 12:25:30

标签: python python-3.x

假设给出了c。找到最多2个唯一解a,b,使得a ^ 3 + b ^ 3 = c ^ 3。

我的解决方案:

c=int(input("Choose c", ))
k=(c-1)**(1/3)
counter=0
a=1
while a<k:
    a+=1
    b=int((c-a**3)**(1/3))
    if a**3+b**3==c and a>b:
        counter+=1
        print(a,b)
    if counter==2:
        break
        print(a,b)

说明:

1:首先我们选择一个整数c。

2:k是上限a。

3:我想要一个计数器,这样我就可以得到两种不同的解决方案。

4:a应从1开始。

5:这是测试从1到k的每个整数。

6:当&#34;如果&#34;并不满意。

7:定义b。

8:这是我们要解决的等式。

9:所以如果公式得到解决,那么我们将1加到计数器上。

10:我们还打印a和b。

11-13:这是为了确保我们在获得第二个解决方案时停止。

问题!如果我输入c = 1729,它只返回(12,1)。为什么不继续寻找更多解决方案?

1 个答案:

答案 0 :(得分:3)

另一个解决方案是(9,10)。问题是你的表达式用于计算b

b=int((c-a**3)**(1/3))

有舍入问题。尝试在Python中计算(1729-9**3)**(1/3.),您将获得9.999999999999998int的{​​{1}}代替9。对此问题的快速解决方法是将计算偏移的数量非常小,例如

10

回复评论时:另外,您的上一个b=int((c-a**3)**(1/3)+1.e-10) 语句需要if之前的print行。