项目欧拉009问题

时间:2012-01-05 15:18:58

标签: c++ infinite-loop

在Project Euler的问题9中,我遇到了一个问题:无限循环。

这是我的代码:

#include <iostream>
#include <cmath>

bool isPythagorean(int a, int b, int c);

int main(){
        int a;
        int aa;
        int b;
        int bb;
        int c;

        for(a = 0; a <= 1000; a++){             /*a loop*/
                aa = a;
                for(b = aa; b <= 1000; b++){     /*b loop*/
                        bb = b;
                        for(c = bb; c <= 1000; c++){
                                if(isPythagorean(a,b,c)){
                                        if(a + b + c == 1000){
                                                std::cout << (a * b) * c;
                                                return 0;
                                        }
                                else
                                        continue;
                                }





                }




        }

        return 1;
}
bool isPythagorean(int a, int b, int c){
        int Pa = (int) pow(a, 2);
        int Pb = (int) pow(b, 2);
        int Pc = (int) pow(c, 2);
        if(a < b && b < c){
                        if(Pa + Pb == Pc)
                                return true;
                        else
                                return false;    
        }

        else
                return false;
}

由于每个帮助白痴写这篇文章的人都提供了礼貌,代码已被更改,但错误仍然存​​在:

运行代码时,不会向终端输出任何内容。有人可以告诉我这里出了什么问题吗?

我是个白痴;感谢每个看到这个的人。

谢谢你,istrandjev注意到一大堆不好的代码。

谢谢你,Blastfurnace注意到这个愚蠢的错误。

1 个答案:

答案 0 :(得分:0)

我没有太多你想要应用的逻辑。什么是%1 == 0&amp;&amp; b%1 == 0&amp; c%1 == 0检查?你知道,如果(真实),你可以简单地写出来。该周期何时结束?如果其中一个条件是&gt;三元组如何被认为是毕达哥拉斯。 c然后你想要一个* a + b * b == c * c?