Project Euler 009 Problems

Project Euler 009 Problems

本文关键字:Problems Euler Project      更新时间:2023-10-16

在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注意到了一大堆糟糕的代码。

谢谢你,高炉注意到了那个愚蠢的错误。

我不太了解您尝试应用的逻辑。什么是%1==0&amp;b%1==0&c%1==0正在检查?如果(真的),你可以简单地写出来。周期应该什么时候结束?如果其中一个条件是a>c,那么你想得到a*a+b*b==c*c,那么三元组怎么会是勾股?