题目9:找出唯一的满足a + b + c = 1000的毕达哥拉斯三元组{a, b, c}。

来源:互联网 发布:eplan软件图片 编辑:程序博客网 时间:2024/06/08 06:21

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

a2 + b2 = c2

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

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

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

 

原题目链接:Problem 9


差不多也是暴力算


public class Problem9 {    public static void main(String[] args) {        int res = 1;        lableA:        for (int c = 1000; c > 1; c--) {            for (int b = c - 1; b > 1; b--) {                int a = 1000 - c - b;                if (a > b || a< 0)                    break;                if (isPythagoras(a, b, c)) {                    res = a * b * c;                    break lableA;                }            }        }        System.out.println(res);            }    private static Boolean isPythagoras(int a, int b, int c) {        long p_a = Math.round(Math.pow(a, 2));        long p_b = Math.round(Math.pow(b, 2));        long p_c = Math.round(Math.pow(c, 2));        return p_a + p_b == p_c;    }}

0 0
原创粉丝点击