1. 程式人生 > >判斷某整數是否為兩數平方之和

判斷某整數是否為兩數平方之和

題:給定一個整數 N,寫一個程式判斷是否存在 2 個整數 a、b(a < b),使得 a^2 + b^2 = N

如:

輸入:N = 5,輸出:true
輸入:N = 7,輸出:false

思路:我們可以把整數N當成是一個圓心在原點的園的半徑的平方。 即圓的方程為:a^2 + b^2 = N。這樣,我們就可以使得a從1開始到根號N,在這個區間內找一個數b,使得根號(N-a^2)為整數,如果找到了就輸出true,沒找到就輸出false。

程式碼:

public boolean test(int n){
        if(n == 0)
            return
false; double eps = 1e-10;// 精度 int sqrtN = (int)Math.sqrt(n); for(int i = 1; i < sqrtN; i++){ int doubleA = i*i; double b = Math.sqrt(n - doubleA); if(b - (double)((int)b) < eps){ return true; } } return
false; }

這段程式碼沒有經過判題程式驗證,只是為了闡述我的思路。如果有不正確的地方,還請指正,謝謝!

嘔心瀝血寫出來的,轉載請一定註明出處!