2010-12-05 106 views
0

我需要找到向上舍入的巨大(5k位左右)數字的立方根。 我該怎麼做?查找大數的立方根

+0

您是否嘗試過http://www.gnu.org/software/bc/?或者如果你需要用某種特定的語言來做到這一點,那它是什麼語言?是否有特定的時間/空間限制? – 2010-12-05 19:18:14

+0

我試過bc,但它不喜歡非整數(1/3)指數 – Dani 2010-12-05 19:23:17

回答

0

這是straightforward iterative algorithm。需要注意的是,他們提出一個觀點唱出special case of square roots的:

一個特殊情況是大家熟悉的 平方根算法。通過設置N = 2,在步驟2 迭代規則變成平方根迭代規則

可以應用於立方根相同的技術:設置N = 3和迭代,直到獲得所需的precision

對於註釋中的規範「它需要四捨五入到最接近的整數並且是精確的」,這隻適用於具有整數或有理立方根的數字。也就是說,可以使用引用的算法通過迭代直到一個迭代的結果與下一個迭代的結果之間的差值小於0.5來找到對這個精度級別的答案。這足夠接近以確保將來的迭代不會遠離那個近似值。

這是數學分析課的練習嗎?如果是這樣,我懷疑這正是爲什麼這樣提出問題的原因:教師希望你將具體問題應用於一般規則。

+0

我不需要精確度...正如我所說的,我需要四捨五入取整 – Dani 2010-12-05 19:24:05

5

如果GNU BC是對你罰款,這可能會做:

http://phodd.net/gnu-bc/bcfaq.html#bccbrt

編輯:

它本質歸結爲:

$ bc -l 
define cbrt(x) { return e(l(x)/3) } 

您將需要增加以便具有必要的精度:

$ bc -l 
bc 1.06.95 
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc. 
This is free software with ABSOLUTELY NO WARRANTY. 
For details type `warranty'. 

define cbrt(x) { return e(l(x)/3) } 

cbrt(10000000000000000000000000000000000000000000000000000000000000000000)^3 
9999999999999999999845725361475980907263179272258247094885777761435.\ 
89049462743995306310 

scale=1000 

cbrt(10000000000000000000000000000000000000000000000000000000000000000000)^3 
9999999999999999999999999999999999999999999999999999999999999999999.\ 
99999999999999999999999999999999999999999999999999999999999999999999\ 
99999999999999999999999999999999999999999999999999999999999999999999\ 
99999999999999999999999999999999999999999999999999999999999999999999\ 
99999999999999999999999999999999999999999999999999999999999999999999\ 
99999999999999999999999999999999999999999999999999999999999999999999\ 
99999999999999999999999999999999999999999999999999999999999999999999\ 
99999999999999999999999999999999999999999999999999999999999999999999\ 
99999999999999999999999999999999999999999999999999999999999999999999\ 
99999999999999999999999999999999999999999999999999999999999999999999\ 
99999999999999999999999999999999999999999999999999999999999999999999\ 
99999999999999999999999999999999999999999999999999999999999999999999\ 
99999999999999999999999999999999999999999999999999999999999999999999\ 
99999999999999999999999999999999999999999999999999999999999999999999\ 
99999999999999999999999999999999999999999999999978254573198390239858\ 
069738839057154871628814670160708326688382280410 

正如你可能已經注意到的那樣,在不增加scale變量的情況下(在我的系統上默認爲20),結果遠不及你所要求的精度。