Comment puis-je représenter un très grand entier dans .NET ?
Question
.NET est-il livré avec une classe capable de représenter des entiers extrêmement grands, tels que la factorielle 100 ?Sinon, quelles sont les bonnes bibliothèques tierces pour y parvenir ?
La solution
.NET 4 a un GrandEntier classe
Représente un entier signé arbitrairement grand.
Le type BigInteger est un type immuable qui représente un entier arbitrairement grand dont la valeur n'a en théorie pas de limite supérieure ou inférieure.Ce type diffère des autres types intégraux du .NET Framework, qui ont une plage indiquée par leurs propriétés MinValue et MaxValue.
Autres conseils
.NET a une classe BigInteger, mais elle est malheureusement interne.Cependant, plusieurs lieux possèdent le leur.Vous pouvez récupérer une implémentation depuis IronPython, ou celle de CodeProject, ou de Visual J#.Je dois dire que je ne les ai pas essayés moi-même, donc je ne sais pas lequel est le meilleur.
http://www.codeplex.com/IronPython http://www.codeproject.com/KB/cs/biginteger.aspx http://msdn.microsoft.com/en-us/magazine/cc163696.aspx
Microsoft.FSharp.Math.Types.BigInt
Il peut représenter n’importe quel entier.
Voici un lien vers la documentation des grands entiers dans le framework 4.0
http://msdn.microsoft.com/en-us/library/system.numerics.biginteger(VS.100).aspx
Mono a déjà une implémentation publique BigInteger :
http://www.go-mono.com/docs/index.aspx?link=T:Mono.Math.BigInteger
Vous pouvez simplement récupérer l'assembly Mono.Security pour l'utiliser ;puisqu'il s'agit d'une bibliothèque de classes Mono, elle devrait également être sous licence MIT.