suivant: Passage de l'écriture en
monter: Passage de l'écriture en
précédent: La base b est
Table des matières
Index
On choisit 36 symboles pour écrire un nombre :
les 10 chiffres 0,1..9 et les 26 lettres majuscules A, B,.., Z.
On transforme tout nombre positif ou nul n (n < b) en un caractère :
ce caractére est soit un chiffre (si n < 10) soit une lettre (A, B...Z)
(si 9 < n < 36).
chiffre(n,b):={
//transforme n (0<=n<b) en son caractere ds la base b
if (n>9)
n:=char(n+55);
else
n:=char(48+n);
return(n);
}
On obtient alors la fonction itérative ecritu:
ecritu(n,b):={
//n est en base 10 et b<=36, ecritu est une fonction iterative
//renvoie la liste des caracteres de l'ecriture de n en base b
local L,r,rc;
L:=[];
while (n>=b){
r:=irem(n,b);
rc:=chiffre(r,b);
L:=concat([rc],L);
n:=iquo(n,b);
}
n:=chiffre(n,b);
L:=concat([n],L);
return(L);
}
- Version recursive
ecriture(n,b):={
//n est en base 10 et b<=36, ecriture est une fonction recursive
//renvoie la liste des caracteres de l'ecriture de n en base b
local r,rc;
if (n>=b){
r:=irem(n,b);
rc:=chiffre(r,b);
return(append(ecriture(iquo(n,b),b),rc));
}
else {
return([chiffre(n,b)]);
}
}
En utilisant la notion de séquence on peut aussi écrire :
ecrit(n,b):= {
//renvoie la sequence des chiffres de n dans la base b
local m,u,cu;
m:=(NULL);
while(n!=0){
u:=(irem(n,b));
if (u>9) {
cu:=(char(u+55));
}
else {
cu:=(char(u+48));
};
m:=(cu,m);
n:=(iquo(n,b));
};
return(m);
}
Documentation de giac écrite par Renée De Graeve