1. 程式人生 > >找出一定範圍內多個連續整數,使其立方之和恰好等於另一個整數的立方

找出一定範圍內多個連續整數,使其立方之和恰好等於另一個整數的立方

es2017 nbsp 現實 png 提高 定位 http ati class

技術分享

題目如圖,關於這道題的第一問比較簡單,只需驗證式子兩邊是否相等即可。這裏主要做一下第二問。

此題要求找出多個連續整數的立方和使其恰好等於另一個整數的立方,因為並沒有明確給出相應的條件,比如起始項,項數等,所以找出所有結果並不現實。故將起始項a範圍定位1~1000,項數n<=1000。

具體的實現思路很簡單,先由兩個for循環分別確定起始項和項數,通過立方和公式(此公式可自行推導)求出從a~a+n-1立方和,將其和取立方根,得到的立方根再取立方與立方和比較,若相同則輸出。

關於代碼中出現的立方和公式,當然可以通過建立一個循環求立方和,此處為了提高效率,故采用了公式。

 1 public static
void main(String[] args) { 2 long sum=0,cbrtSum=0; 3 for(long a=1;a<=1000;a++){ 4 for(long n=2;n<=1000;n++){ 5 /*此為求從起始項到結束項的立方和公式*/ 6 sum=n*a*a*a+((n*(n-1))>>1)*(3*a*a+((n<<1)-1)*a+((n*(n-1))>>1)); 7 cbrtSum=(long)Math.cbrt(sum);
8 if((long)Math.pow(cbrtSum, 3)==sum){ 9 System.out.println(a+"^3+...+"+(a+n-1)+"^3="+cbrtSum+"^3"); 10 } 11 } 12 } 13 System.out.println("Finished"); 14 }

運行結果:

技術分享

找出一定範圍內多個連續整數,使其立方之和恰好等於另一個整數的立方