Algo de division sur des nbrs infinis en C

Nico -  
 Nep -
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

Bob
 
Tu va au bistro? :-D
1
Bob
 
Tu veux faire tourner ton algo sur combien de générations? :-D
0
Nico
 
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
Bob
 
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
Nico
 
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
Bob
 
2^32 ~= 4 milliards
signed int ~= ±2 milliards
unsigned int ~= +4 milliards
0
Nico
 
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
Nico
 
bistromathique...
0
Bob
 
T'as tenté d'optimisé ton code ou pas?
0
Nico
 
le probleme c que je fais ca par soustractions successives , donc c pas terrible au niveau vitesse.
0
Bob
 
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
Nico
 
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
mirza
 
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
Nico
 
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
Bob
 
Le résultat doit être inclus dans N ou R?
0
Nico
 
le resultat est dans un char * , une chaine de caractere.
0
Bob
 
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
Nico
 
Entier , on s'en fout des virgules (heureusement :) ).

Pr le signe on va dire positif , je traite le signe à part
0
Bob
 
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
Nico
 
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
Higink
 
oh ! un efreien ^^
Je me trompe ?
0
skanight
 
epitech?
0
mirza
 
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