C #: Wie soll ich Arithmetik mit riesigen Zahlen handhaben?

8

Ich schreibe eine App, die Arithmetik mit riesigen Zahlen mit sehr vielen Ziffern beinhaltet. Ich habe zuvor eine Klasse geschrieben, die die Handhabung großer Zahlen vereinfacht, indem man sie als Strings definiert und dann langsame arithmetische String-Funktionen verwendet. Ist das der beste Weg? Wenn nicht, wie soll ich dieses Problem angehen? Hat C # etwas für solche Situationen eingebaut?

    
Maxim Zaslavsky 13.02.2010, 22:10
quelle

5 Antworten

6

.NET 4 wird dies über den BigInteger-Typ eingebaut haben. Dies wird als ziemlich gut abgestimmt angesehen und sollte sehr gut funktionieren.

Für 3.5 und früher können Sie eine Implementierung von BigInteger aus den Dynamic Language Runtime Quellen beziehen. (Siehe zB Ссылка und drill down in Src / Runtime / Microsoft.Dynamic / Math.) Ich weiß nicht, ob dies genau so optimiert wurde wie der .NET 4 BigInteger-Typ, aber es sollte dennoch effizienter sein als Ihre String-Version, da es intern die großen Zahlen mit ganzzahligen Typen darstellt und arithmetisch unter Integer-Operationen abarbeitet .

    
itowlson 13.02.2010, 22:13
quelle
7

Wenn Sie dies unter .NET 4 tun können, System. Numeric.BigInteger kann helfen. Wenn Sie eine ältere Version von .NET verwenden, wird Ihnen IntX helfen.

Siehe auch diese SO-Frage zu großen ganzen Zahlen in C #.

    
Håvard S 13.02.2010 22:14
quelle
1

Die GNU MP bignum Bibliothek ist eine der schnellsten. Es gibt einen .NET-Wrapper dafür Ссылка

Hier ist eine weitere bignum-Bibliothek für .NET mit Quelle.

>     
John Knoeller 13.02.2010 22:15
quelle
1

Big Integer-Klasse, die ich viele Male für Kryptografieprojekte verwendet habe (wo extrem große Zahlen benötigt werden). Funktioniert großartig.

Ссылка

    
ACBurk 13.02.2010 22:21
quelle
-1

In der Dotnet-Version über 4.0, System.Numerics.BigInteger wird Ihnen bei diesem Problem helfen.

Wenn Sie einen Assemblierungsreferenzfehler mit der obigen Syntax erhalten, fügen Sie die Referenz mit

hinzu

Ссылка .

Hoffe, das wird dir helfen ..!

    
user680140 01.10.2012 12:04
quelle

Tags und Links