歐拉工程第9題 找出唯一的滿足a + b + c = 1000的畢達哥拉斯三元組{a, b, c}

題目

一個畢達哥拉斯三元組是一個包含三個自然數的集合,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<1000a2
c=1000ab

程序

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;
            }
        }
    }
}
發佈了31 篇原創文章 · 獲贊 2 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章