我写了这段代码,但在运行它时,控制台只是停留在“运行...”不会真的做任何事,至少我能看出来。我在这里有点不知所措,因为我想不出别的办法了。
#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();
}发布于 2012-07-25 13:08:21
您可能看不到任何输出,因为您的终端是行缓冲的,并且您从不编写换行符或刷新流。要解决此问题,可以将std::endl添加到输出行:
std::cout << a << ", " << b << ", " << c << std::endl;这样,一旦找到所有的三元组,您就会看到它们,但程序仍然需要很长时间才能完成。甚至可能需要很长时间才能找到任何结果。您可以通过避免一些嵌套循环来加快程序运行速度。
https://stackoverflow.com/questions/11642935
复制相似问题