Classe integer pour gérer les grands entiers

Soyez le premier à donner votre avis sur cette source.

Vue 6 700 fois - Téléchargée 489 fois

Description

Classe Integer pour gérer les grans entiers avec a mon avis des performances acceptables et a priori portable à 100%.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

007Julien
Messages postés
279
Date d'inscription
mercredi 22 septembre 2010
Statut
Membre
Dernière intervention
8 janvier 2014
2 -
Bonjour,

Merci pour cette classe utile qui nous permet de progresser...

Ayant à manipuler de très grands nombres j'aimerais accélerer la racine carrée (de A Integer) en partant d'une première approximation (prmRcn) calculée à partir de la racine d'un float calculé à partir des m_Digits (et utiliser ensuite l'algorythme newVal=(oldVal+A/oldVal)/2 s'il est plus rapide que la dichotomie).

Malheureusement, je m'en sort pas avec les lists et n'arrive pas à construire une fonction float GetValue(Integer &a const); ou même à utiliser la fonction existante GetDigits()...

D'avance merci.

NB : Je suggère un ajout pour la fonction pow

Integer pow(Integer a, int b)
{
if(a == 0) return 1;
if(a == 1) return 1;if(a -1) return (b % 2 0) ? 1 : -1;
if(b == 0) return 1;
if(b < 0) throw Error("Erreur de domaine");
Integer result=1,p=a;
while (0>1)) p*=p;
}
return result;
}
TheCamel
Messages postés
27
Date d'inscription
dimanche 16 mars 2008
Statut
Membre
Dernière intervention
23 février 2011
1 -
Bonjour,

Magnifique classe qui va m'être très utile. J'ai cependant un petite question : pourquoi utilise-tu des int que tu limites à 10000 (perte considérable de mémoire) au lieu de char que tu limiterais à 100 (grosse économie de place par rapport à ton code) ?

Merci beaucoup pour cette classe très utile.

Cordialement,
Benoît
skone007
Messages postés
166
Date d'inscription
mercredi 24 avril 2002
Statut
Membre
Dernière intervention
23 juin 2009
-
Il y a un bug quand je fais Integer("2971215073") / Integer("27011") Donc quand je fais aussi Integer("2971215073") % Integer("27011"). L'opération ne ce fait jamais
skone007
Messages postés
166
Date d'inscription
mercredi 24 avril 2002
Statut
Membre
Dernière intervention
23 juin 2009
-
oupss en effet mais la sorti de ma fonction est un entier comment gérer as tu une solution ? ret est un entier
vecchio56
Messages postés
6539
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7 -
Comme son nom l'indique, mon code gère les entiers.

sqrt5 = sqrt5.Sqrt(Integer("5")); vaut donc 2
et Integer invsqrt5 = Integer("1") / sqrt5; vaut 0

ce qui explique tes résultats

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.