2013-03-30 53 views
-3

我正在学习使用Project Euler在python中编写代码。我已经写了下面的程序,我认为应该工作:我的python程序有什么问题?

a=1 
b=1 
c=1 

while(a<=998): 
while(b<=998): 
    c=(1000-(a+b) 

    if (a*a+b*b==c*c): 
     print a,b,c 
    b=b+1 
a=a+1 

然而,当我实际运行从终端程序,解释说,9号线

if (a*a+b*b==c*c): 

是无效的。谁能告诉我为什么这是?

感谢

+0

C =(1000-(A + B)')' – hughdbrown

+0

一些问题应通过这里一个基本的编译后才能发布:d – Maroun

+0

你不应该将标签与空格混合,我建议使用空格**将格式化为SO的代码** – Anthon

回答

3

假设你正在寻找满足条件的勾股数,你不想与消极的一面三角形:

for a in range(1, 999): 
    for b in range(1, 1000 - a): 
     c = 1000 - (a + b) 
     if a * a + b * b == c * c: 
      print a, b, c 

而且你可以在这样递增的顺序获得独特的三胞胎:

for a in range(1, 999): 
    for b in range(a, 1000 - a): 
     c = 1000 - (a + b) 
     if a * a + b * b == c * c: 
      print a, b, c 

了。在原密码输入错误:c=(1000-(a+b)

4

前一个行缺少一个右括号:

c=(1000-(a+b) 
+0

非常感谢。我现在觉得很愚蠢。我是一个新手,而且我没有想到解释者说在一条线上的错误可能真的在别的地方。 –