您的位置:首页 > 其它

欧拉工程第9题 找出唯一的满足a + b + c = 1000的毕达哥拉斯三元组{a, b, c}

2016-10-16 10:07 337 查看

题目

一个毕达哥拉斯三元组是一个包含三个自然数的集合,a<b<c,满足条件:a2+b2=c2

例如:32+42=9+16=25=52

已知存在并且只存在一个毕达哥拉斯三元组满足条件a+b+c=1000。

找出该三元组中abc的乘积。

解题方法

此题的关键就是a,b和c的取值上界,c可以由a和b确定,所以只要计算a和b的上界即可。

因为a<b<c,所以a<[10003],[N]代表取整运算,对于正数来说,即舍去小数部分,如[1.66]=1,对于负数来说,取整运算是获得不大于N的最大整数,如[−1.6]=−2。

又因为a<b<c,所以当a确定后,a<b<1000−a2。

c=1000−a−b

程序

public static void solve() {
for (int a=1;a<333;a++) {
for (int b=a+1;b<(1000-a)/2;b++){
int c = 1000-a-b;
if (a*a+b*b==c*c){
System.out.println(a*b*c);
break;
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐