C#BigInteger數據類型的擴展方法的實現。例如提取第n個根,產生隨機值和指示。由尼古拉(Nikolai Thesquid)作者。
我將很高興合併您的拉動請求以提高計算性能。即使改進僅影響來自值範圍的單個情況。
要使用這些擴展名,您需要以下命名空間添加到代碼: System.Numerics和TheSquid.Numerics.Extensions 。
C#實現擴展方法,以快速計算BigInteger值的第n個根(包括平方根)。
基本上,您可以將類Nthrootextension從源存儲庫複製到項目。另一個選項是將thesquid.numerics.numerics.extensions軟件包從nuget存儲庫中添加到項目的依賴項。
用法示例:
var source = BigInteger . Parse ( Console . ReadLine ( ) ) ;
var exponent = int . Parse ( Console . ReadLine ( ) ) ;
var root = source . NthRoot ( exponent , out var isExactResult ) ;您可以在克隆存儲庫和構建解決方案之後立即啟動隨機的NTHROOT測試。在開始速度nth root測試之前,您必須運行生成測試並重建解決方案。
擴展方法使用兩種根計算算法:著名的牛頓的方法和數字數字方法。隨著根的程度的增加,牛頓方法的計算減慢,數字劃分方法會加速。根部輻射值階的100,000小數位數,計算速度對根的依賴性如下:

C#實現擴展方法,以在指定範圍內生成隨機BigInteger值。
基本上,您可以將Class nextBigInteGerextension從源存儲庫複製到項目。另一個選項是將thesquid.numerics.numerics.extensions軟件包從nuget存儲庫中添加到項目的依賴項。
用法示例:
var min = BigInteger . Parse ( Console . ReadLine ( ) ) ;
var max = BigInteger . Parse ( Console . ReadLine ( ) ) ;
var random = new Random ( DateTime . Now . Millisecond ) . NextBigInteger ( min , max ) ;您可以使用project thesquid.numerics.extensions.tests的NextBigInteGertensensions class開始對NextBigInteger擴展方法的隨機測試,直接在克隆存儲庫和構建解決方案之後。
系統類隨機的擴展方法。方法使用隨機類的實例生成一個隨機字節數組。
C#使用緩存使用重複參數更快地計算功率的擴展方法。
基本上,您可以將powcachedextension類從源存儲庫複製到項目。另一個選項是將thesquid.numerics.numerics.extensions軟件包從nuget存儲庫中添加到項目的依賴項。
用法示例:
var source = BigInteger . Parse ( Console . ReadLine ( ) ) ;
var exponent = int . Parse ( Console . ReadLine ( ) ) ;
var power = source . PowCached ( exponent ) ; POW緩存自動清除自身。首先,如果計算電源時發生內存錯誤。然後將完全清除緩存。其次,如果緩存中的元素數量達到int.MaxValue的數量。然後,緩存將清除一半。此外,您可以檢查緩存中的元素數量並手動清除它,並留下指定數量的元素。
用法示例:
var available = PowCachedExtension . ItemsInCache ;
var threshold = long . Parse ( Console . ReadLine ( ) ) ;
if ( threshold < available ) PowCachedExtension . ShrinkCacheData ( threshold ) ;您可以使用Project thesquid.numerics.extensions.tests在克隆存儲庫和構建解決方案後使用POWCACHEDEXTENSTESTS類開始對POWCACHED擴展方法的隨機測試。
通過記住計算程度的結果以及記住計算進度中獲得的中間結果來實現加速。在0到1000範圍內的隨機地下值時,隨機指數值範圍為0到1000,迭代量為2000000,計算速度對緩存填充的依賴性如下:
