Nombres dépassant les types de base en C #

Je résous des problèmes dans Project Euler . La plupart des problèmes résolus par

  1. grand nombre qui dépasse ulong,
Ex : ulong number = 81237146123746237846293567465365862854736263874623654728568263582; 
  1. nombres décimaux très sensibles avec des chiffres significatifs supérieurs à 30

Ex: décimal déc = 0,3242342543573894756936576474978265726385428569234753964340653;

  1. les tableaux qui doivent avoir des valeurs d’index dépassant la plus grande valeur int.

Ex: bool [] items = new bool [213192471235494658346583465340673475263842864836];

J’ai trouvé une bibliothèque appelée IntX pour résoudre ces gros nombres. Mais je me demande comment puis-je résoudre ce problème avec les types de base .NET?

Merci pour les réponses !

Eh bien, pour le troisième élément, vous ne voulez vraiment pas utiliser un tableau, car il doit être alloué aussi gros.

Permettez-moi de reformuler cela.

Au moment où vous aurez les moyens et pourrez accéder à autant de mémoire, le problème des grands nombres sera résolu!

Pour répondre à votre dernière question, il n’est pas possible de résoudre ce problème en utilisant uniquement des types de base. Si vous ne faites pas ce que les fabricants d’IntX ont fait, implémentez la prise en charge du grand nombre.

Puis-je vous suggérer d’essayer un autre langage de programmation pour le problème euler? J’ai plus de chance avec Python, car il prend en charge les gros chiffres prêts à l’emploi et intégrés à tout le rest. Eh bien, à part ce tableau, vous ne pouvez vraiment pas le faire dans aucune langue ces jours-ci.

Peut-être que cela pourrait vous donner des idées sur la façon de résoudre une partie de votre problème: http://www.codeproject.com/csharp/BigInteger.asp

Wikipedia a également un bon article sur les mathématiques à précision arbitraire et dans cet article, un lien vers Codeplex et W3b.sine est une bibliothèque de nombres c # de précision arbitraire.

Eh bien, je vous suggère de regarder cette autre réponse pour voir comment j’ai résolu le problème des grands nombres. En gros, vous devez représenter les nombres d’une autre manière …

La plupart des problèmes résolus par

  1. grand nombre qui dépasse ulong,
  2. nombres décimaux très sensibles avec des chiffres significatifs supérieurs à 30
  3. les tableaux qui doivent avoir des valeurs d’index dépassant la plus grande valeur int.

La plupart des problèmes sont conçus pour s’inscrire dans des délais de 64 bits. Il y en a un ou deux qui nécessitent des entiers plus grands, mais pas beaucoup. Aucune de celles que j’ai vues ne nécessite des nombres décimaux comportant plus de 30 chiffres et aucune des tableaux de taille supérieure à quelques milliers d’entrées.

N’oubliez pas que les solutions correctes aux problèmes doivent s’exécuter dans un délai maximal de quelques secondes. Pour remplir un tableau de 213192471235494658346583465340673475263842864836 bits, il faudra 10 à 30 ans.

Une autre option consiste à utiliser le type BigInt disponible dans F #: http://cs.hubfs.net/forums/thread/887.aspx