next up previous contents index
suivant: La base b est monter: Passage de l'écriture en précédent: Passage de l'écriture en   Table des matières   Index

La base b est inférieure ou égale à 10

- Version itérative
Si n < b, il n'y a rien à faire : l'écriture en base b est la même que l'écriture en base dix et est n. On divise n par b : n = b*q + r avec 0 $ \leq$ r < b).
Le reste r de la division euclidienne de n par b (r:=irem(n,b)) donne le dernier chiffre de l'écriture en base b de n. L'avant dernier chiffre de l'écriture en base b de n sera donné par le le reste de la division euclidienne de q (q:=iquo(n,b)) par b. On fait donc une boucle en remplacant n par q (n:=iquo(n,b)) tant que n $ \geq$ b en mettant à chaque étape r:=irem(n,b) au début de la liste qui doit renvoyer le résultat.
On écrit la fonction itérative ecritu qui renvoie la liste des chiffres de n en base b :
ecritu(n,b):={
//n est en base 10 et b<=10, ecrit est une fonction iterative 
//renvoie la liste des caracteres de l'ecriture de n en base b  
local L;
L:=[];
while (n>=b){
L:=concat([irem(n,b)],L);
n:=iquo(n,b);
}
L:=concat([n],L);
return(L);
}
- Version récursive
Si n < b, l'écriture en base b est la même que l'écriture en base dix et est n.
Si n $ \geq$ b, l'écriture en base b de n est formée par l'écriture en base b de q suivi de r, lorsque q et r sont le quotient et le reste de la division euclidienne de n par b (n = b*q + r avec 0 $ \leq$ r < b).
On écrit la fonction récursive ecritur qui renvoie la liste des chiffres de n en base b :
ecritur(n,b):={
//n est en base 10 et b<=10, ecritur est recursive 
//renvoie la liste des caracteres de l'ecriture de n en base b
if (n>=b)
return(concat(ecritur(iquo(n,b),b),irem(n,b)));
else
return([n]);
}

next up previous contents index
suivant: La base b est monter: Passage de l'écriture en précédent: Passage de l'écriture en   Table des matières   Index
Documentation de giac écrite par Renée De Graeve