判斷某整數是否為兩數平方之和
阿新 • • 發佈:2019-01-05
題:給定一個整數 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;
}
這段程式碼沒有經過判題程式驗證,只是為了闡述我的思路。如果有不正確的地方,還請指正,謝謝!
嘔心瀝血寫出來的,轉載請一定註明出處!