1

我写了这个,但是在运行它时,控制台只是坐在“正在运行......”并且不会真正做任何事情,至少我可以看到。我在这里有点不知所措,因为我想不出别的办法。

#include <iostream>
#include <cmath>
#include <cstdlib>

int main(void) {
    int count = 0;
    do {

        int a = 1;
        int b = 2;
        int c = 3;
        int total;

        for (a=1;a<b;a++) {
            for (b=2;b<c;b++) {
                for (c=3;c<=1000;c++) {
                    total = a+b+c;

                    if (total == 1000 && a*a + b*b == c*c) {
                        std::cout << a << ", " << b << ", " << c;

                    }
                }
            }
        }



        count++;

    } while(count < 1000);  
    return 0;
    std::cin.get();
}
4

1 回答 1

1

您可能看不到任何输出,因为您的终端是行缓冲的,并且您从不写换行符或刷新流。要解决此问题,您可以添加std::endl到输出行:

std::cout << a << ", " << b << ", " << c << std::endl;

这样一来,您应该会在找到所有三元组后立即看到它们,但程序仍然需要很长时间才能完成。甚至可能需要很长时间才能找到任何结果。您可以通过避免一些嵌套循环来加速程序。

于 2012-07-25T05:08:20.610 回答