Algo de division sur des nbrs infinis en C

Fermé
Nico - 10 nov. 2003 à 16:33
 Nep - 28 mars 2012 à 13:48
Slt , je cherche à faire un algo qui divise des nbres de taille infinies.

Alors bien sur y'a l'algo des soustractiosn successives , et celui des multiplications successives , mais je voudrais un algo rapide.Seulement j'avoue ne pas comprendre comment faire.

Si qqu'un a une petite idée , ca serait sympa.

25 réponses

Tu va au bistro? :-D
1
Tu veux faire tourner ton algo sur combien de générations? :-D
0
lol

En fait quand je dis nbre infinis , je parle de nombre dont la taille peut faire jusqu'à 2^32 , soit pres de 2 milliards de chiffres.
0
En gros un nombre de 4 gibioctets, trés ambitieux le monsieur :-D . C'est pour faire quoi en réalité parce que ça me semble assez démesurer comme pratique.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lol

En fait quand je dis nbre infinis , je parle de nombre dont la taille peut faire jusqu'à 2^32 , soit pres de 2 milliards de chiffres.
0
2^32 ~= 4 milliards
signed int ~= ±2 milliards
unsigned int ~= +4 milliards
0
C pr une bistro qu'on doit rendre.j'ai reussi a faire l'addition , la mult et la soustraction , mais je coince sur la division.Enfin j'ai un algo qui marche mais est tres lent des que les nbres sont enormes.
0
bistromathique...
0
T'as tenté d'optimisé ton code ou pas?
0
le probleme c que je fais ca par soustractions successives , donc c pas terrible au niveau vitesse.
0
Et par décalage binaire c'est pas faisable? Essaie au maximum de débaler les boucles inutiles et de minimiser le nombre de variable.
0
et comment tu fias en decalage binaire , surtout que les nbres sont representes en chaines de caracteres et non pas dans des int ou double
0
en C les décalages c'est <<
(attention le résultat diffère si tu es en unsigned ou signed !!!)

tpar contre ça parche pas sur les chaines

postes nous l'énoncé complet qu'on voit ça ...
0
Je peux vous donner un exemple
On a 2 nbres , n1 et n2 qui sont sous forme de chaines de caractere pour paser outre la limitation de taille des int et double ou autre.Ce qui permet de faire des calculs sur des nombres enormes.

Pr n1 et n2 on peu aovi par exemple:

95672567817951761579157216735873279272197127461574217178879767543287978728852737373776494727517867987616545000006040894798468741535435864645465465798999999999999999999999999999999999999999999999999997872885273737377649472751786798761654500000604089479846874153543586464546546579899999999999999999999999999999999999999787288527373737764947275178679876165450000060408947984687415354358646454654657989999999999999999999999999999999999999978728852737373776494727517867987616545000006040894798468741535435864645465465798999999999999999999999999999999999999997872885273737377649472751786798761654500000604089479846874153543586464546546579899999999999999999999999999999999999999787288527373737764947275178679876165450000060408947984687415354358646454654657989999999999999999999999999999999999999


et la meme chose pour n2.

Une fois qu'on a nos nombres , on doit pouvoir calculer tres vite l'addition des 2 nbres , leur soustraction , la multiplication , la division et le modulo.


L'addiiton ,la soustraction et lamultiplicaiton marchent pr moi , mai spas la division.Evidememnt le modulo marchera qd j'aurais reussi la division , ca sera qu'une formalité.

Pr le decalage binaire , je demandais surtout quel serait l'algo a utiliser pr le faire
0
Le résultat doit être inclus dans N ou R?
0
le resultat est dans un char * , une chaine de caractere.
0
Oui le stockage dans une chaine mais il doit être entier ou réelle, positif ou négatif ... précise mieux le domaine de définiition stp.
0
Entier , on s'en fout des virgules (heureusement :) ).

Pr le signe on va dire positif , je traite le signe à part
0
C'est vrai qu'à première vue d'esprit la soustraction semble la plus simple des solutions. Le résultat je suppose (sans trop jouer au con :-D) doit être en base décimale du moins par la lecture ASCII. Balance ton bout de code qui marche stp histoire de voir si il y a quelques améliorations à faire.
0
Je ne peux malheureusement pas mettre mon code parce que je peux pas me connecter aux pc de mon ecole , les serveurs sont down! lol

Par contre le principe est tres con , je fais des multiplicaitons successives jusqu a ariver au bon quotient , mais bon ca prend trop de temps ,ou ca segfaulte.

Disons que lorsque je vois les progs internes qui donnent les resultats instantanements, , je me dis qu 'il y a forcement une putain d astuce a utiliser.

Sinon apres la division , c la soustraction qui m'a le plus casse les couilles , mais la ca marhe.

Ce qui est chiant , c'est qu'il faut aussi gerer les bases differentes , genre une base "b0tijlp" ou n'importe quoi , il faut aussi gerer le fait que le 1 peut etre represente par un autre caractere.

Enfin totu ca c pas le prob , j'ai reussi a tout gerer , c'est le principe de la division en elle meme qui m echappe.

J'avais pense a des solutions pr arrive au resultat plus rapidement , deja par dichotomie ,mais j'ia pas reussi a la mettre en place sur des nombres aussi grands.
0
oh ! un efreien ^^
Je me trompe ?
0
epitech?
0
ok postes nous ton code ce we de chez toi ou lundi de l'ecole et on te donnera des astuces plus facilement,

mirza
0