x 的 x 次方等於10,求 x


當 x 的 x 次方為10時,求 x 的值,精確到小數位后9位

過程如下:

2 的 2 次方 小於 10;

3 的 3 次方 大於 10;

因此 x 在 2 到 3 之間。

找出整數部分后,需要計算出小數部分,然后把兩部分加到一個串里即可(可以以串的形式輸出,也可以轉成浮點數輸出,下面的程序是以串的形式輸出的)。

用試探法來做,過程如下:

小數點后第一位,從 0 開始,加在整數部分后面組成一個新數 y,如果 y 的 y 次方小於 10,把 0 去掉,加上 1,......

  依次往下加,直到 y 的 y 次方大於 10,即可確定 x 的小數部分的第一位為當前數字的前一位。

  例如:

  2.1 的 2.1 次方 小於 10;

  2.2 的 2.2 次方 小於 10;

  ……

  2.5 的 2.5 次方 小於 10;

  2.6 的 2.6 次方 大於 10;

  因此,小數第一位是 5,當前 x 為 2.5……。

同理,即可求出小數部分的第 2 到 9 位。

程序如下:

//2017.03.16 by 迷糊狐狸
public class Test { static String s = ""; static String f(double d){ for(int i=1; i<d; i++){ if(Math.pow(i, i)>=d){ s = f(9, i-1, d); break; } } s = s.charAt(0) + "." + s.substring(1); return s; } static String f(int k, int n, double p){ s = s + n; if(k<=0)return s; String s1 = s.charAt(0) + "." + s.substring(1); String s2 = ""; for(int i=1; i<=10; i++){ double d = Double.parseDouble(s1 + i); if(Math.pow(d, d)>p){ s2 = f(k-1, i-1, p); s = n + f(k-1, i-1, p); break; } } s = s2; return s; } public static void main(String[] args) { String s = f(10); System.out.println(s); double d = Double.parseDouble(s); System.out.println(Math.pow(d, d)); } }

 該程序的后一個輸出為檢驗第一個結果所用。

輸出結果如下:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM