tsss c quoi encore ces gens qui lisent pas les faq et les tuto ... je c que le mien il a pas trop avancé mais bon ...
je cite :
IV.2 changement de base et décomposition d’un nombre dans une base donnée
Retournons à la classe de CP, et demandons-nous comment marche le système décimal ? En fait, depuis le primaire, nous l’utilisons, car il nous paraît naturel. Voici comment ça marche : chaque chiffre représente un coefficient dans la base décimale {10i, i étant dans N}.
Ex :125467=7*10 0+6*10 1+4*10 2+5*10 3+2*10 4+1*10 5
Pour changer de base, il suffit de choisir un nombre n et de dire que l’on va écrire chaque nombre dans la base {ni, i étant dans N}. On dit que l’on est dans la base n.
Le théorème de changement de base nous assure l’unicité de l’écriture d’un nombre dans toutes les bases possibles.
Faisons un algorithme qui passe d’une base p à une autre base b pour un nombre n donné par une liste l1.
Nous calculons tout d’abord n dans la base 10, puis nous le calculons dans la base b. L’avantage de cette méthode est d’être simple d’accès à tous.
Programme :
basep2b (n,p,b) @n est une liste ! ! !
prgm
local i,res,n10,p
dim(n)->i
0->n10
for j,0,i-1
n10+n[j+1]*p^j ->n10
endfor
@nous avons dans n10 n dans la base décimale
floor(ln(n10)/ln(b))+1->p
@p est le nombre de chiffres de n10 dans la base b
p->dim(res)
fill(0)->res
for j,p,0,-1
for a,b-1,1,-1
if n10-a*b^j<0
cycle
n10-a*b^j->n10
a->res[j]
endfor
endfor
@on fait en fait une sorte de division euclidienne, mais sans division…
disphome res
endprgm
La complexité de cet algorithme est en O(2*p*b) en multiplications, la preuve étant laissée en exercice.
vala vala
http://www.ti-fr.org/prog/index.php?do=basic/tuto/chap2 tout simplement