2009-10-27 135 views
2

有人請指出一個網站,我可以找到一個算法,以有效地計算整數冪指數使用C#的大功率?快速求冪的實現

例如。我想計算2^60000或3^12345

回答

13

除非這是家庭作業,否則您可能不想推出自己的任意精確求冪的實現。計算你描述的類型的大指數是複雜的 - 除了性能。

我會推薦使用existing arbitrary precision arithmetic libraries, like GMP之一 - 其中大部分都有庫從C#訪問它們。

F#支持使用BigInt類的任意精度算法(如果您導入它所在的程序集,您也可以從C#訪問)。但是,我不知道BigInt指數是如何優化的。

如果您只是想了解指數運算的高效算法,您可能需要查看指數運算的Square-And-Multiply算法。

+0

優秀的答案。 – 2009-10-27 15:13:21

+0

+1。很有意思。 – RichardOD 2009-10-30 16:34:44

0

查看結果:IntX適用於LARGE整數。你可能必須編寫自己的權力實現,但由於支持乘法,所以這不應該太難。

由280Z28編輯:另一個包含fast Pow,ModPow和素數測試的實現是BigInteger實現(代碼項目),我過去曾在Project Euler問題上使用過 - 儘管我現在使用.NET 4.0並使用它的System.Numerics.BigInteger實現。

+0

如果計算結果非常重要,我會建議使用比IntX更成熟的庫。爲任意精度編寫正確的庫比看起來更難 - 許多小型項目還沒有機會檢測和解決困擾大多數實現的各類問題。 – LBushkin 2009-10-27 15:02:41

2

整數求冪可以有效地使用稱爲「平方的求冪運算」的方法來計算link

此方法也可用於計算模冪運算link,它用於某些非對稱加密方法(如RSA)。