suivant: La base b est
monter: Passage de l'écriture en
précédent: Passage de l'écriture en
Table des matières
Index
- 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
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
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
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
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]);
}
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