问题描述
勾股数是一组三个自然数,a < b < c,以这三个数为三角形的三条边能够形成一个直角三角形
输出所有a + b + c <= 1000的勾股数
a小的先输出;a相同的,b小的先输出。
输出格式
每行为一组勾股数,用空格隔开
样例输出
例如,结果的前三行应当是
3 4 5
5 12 13
6 8 10
直接暴力算了,刚开始写都从0开始,然后小于1000,然后报了运行超时,最后一想因为a<b<c所以b可以直接从a开始找,那c也可以从b开始找,然后没有注意看题 人家要a+b+c<=1000,我没看到然后直接就错误了,正确代码如下:
public class Test187 {//提交代码时,当然改成Main了哦 public static void main(String[] args) { for(int i=1;i<1000;i++){ for(int j=i;j<1000;j++){ for(int z=j;z<1000;z++){ if (i*i+j*j==z*z&&i+j+z<=1000) { System.out.println(i+" "+j+" "+z); } } } } } } ```![在这里插入图片描述](https://ucc.alicdn.com/images/user-upload-01/20190401212018735.PNG)