# PREFIXES DE L'ECRITURE DECIMALE DE 2^k.		
			
 #on fait prudemment le menage avant de commencer
 F:='F':
 NF:='NF':
 # le compteur c1 va compter le nombre de points qui ne 
 # correspondent pas a une premiere rencontre. il sert d'indice 
 # pour la table NF (non first).
 # c2 donne la borne superieure des n formant un intervalle 
 # contigu depuis 1 que l'on a rencontre.
 c1:=0:
 
 c2:=0:
 
 kmax:=1000:
 # on ne veut voir que les entiers plus petits que nmax.
 nmax:=1000:
 # il est donc inutile de regarder les prefixes dont la longueur 
 # excede celle de nmax.
 L:=evalf(log[10](nmax)):
 # premiere version prudente: for k to kmax do
 # deuxieme version optimiste: for k while c2 < nmax do
 for k while c2 < nmax do
   N:=2^k;
   N10:=convert(N,base,10);
   l:=nops(N10)-1;
   for c3 from 0 to min(l,L) do 
     n:=add(N10[l-c3+c4+1]*10^c4,c4=0..c3);
     if assigned(F[n]) then
       c1:=c1+1;
       NF[c1]:=[n,k]
     else
       F[n]:=[n,k];
       if n=c2+1 then
         for c5 from n+1 while assigned(F[c5]) do od;
         c2:=c5-1
       fi
     fi
   od
 od:
 #print(F);
 
 c1,c2;

                             11680, 1058

 k;

                                 3974

 #print(NF);

 picF:=plot([seq(F[n],n=1..c2)],style=point,symbol=box,color=red):
 picNF:=plot([seq(NF[i],i=1..c1)],style=point,symbol=circle,color=blue):
 plots[display]({picF,picNF},view=[0..nmax,0..kmax],scaling=constrained);