本道题非常的简单,主要的问题就是三条边的条件控制上
for(;a<500;a++){
for(b=a;b<500;b++){
for(c=5;c<500;c++){
………………
}
}
}
尤其是b=a的条件判断,导致我第一次输出的错误,不符合题目的要求
另外设置条件如果两边之和小于第三边,那么直接break跳出循环就好了,节省资源,以下是代码和题目
public class ADV187 {
public static void main(String[] args) {
// TODO Auto-generated method stub
/*
问题描述
勾股数是一组三个自然数,a < b < c,以这三个数为三角形的三条边能够形成一个直角三角形
输出所有a + b + c <= 1000的勾股数
a小的先输出;a相同的,b小的先输出。
输出格式
每行为一组勾股数,用空格隔开
样例输出
例如,结果的前三行应当是
3 4 5
5 12 13
6 8 10*/
int a=3,b=4,c=5;
for(;a<500;a++){
for(b=a;b<500;b++){
for(c=5;c<500;c++){
if(a+b<=c){
break;
}
if(a*a+b*b==c*c){
System.out.print(a+" "+b+" "+c);
System.out.println();
}
if(a+b+c>1000){
break;
}
}
}
}
}
}