en effet, si dès 3 ça ne fonctionne pas, il ne faut pas espérer une règle douce qui mènerait systématiquement à une solution unique.
merci !
-----
quand on ne sait pas, il faut demander
Aujourd'hui
Publicité
09/07/2016, 22h52
#32
obi76
Modérateur*
Date d'inscription
mai 2007
Localisation
Marseille
Âge
36
Messages
17 954
Re : Le nombre auquel je pense
Bonjour,
j'ai honte, mais un petit brute force me donne :
Cliquez pour afficher
3816547290
Le code (5 minutes de run) :
Cliquez pour afficher
Code:
program recup
integer(1), dimension(10) :: liste
integer(8) :: i, tmp, res
logical :: flag
liste = (/0,1,2,3,4,5,6,7,8,9/)
do while(liste(1) < 10)
liste(10) = liste(10) + 1
do j = 10,2,-1
if (liste(j) > 9) then
liste(j-1) = liste(j-1) + 1
liste(j) = 0
endif
enddo
flag = .true.
do i = 0, 9
if (count(liste == i) /= 1) flag = .false.
enddo
if (flag) then ! test divisibilité
! write(10,*) liste
tmp = liste(1)
flag = .true.
do i = 2, 10
tmp = tmp * 10 + liste(i)
if (modulo(tmp,i)/=0) flag = .false.
enddo
write(10,*) tmp
if (flag) write(10,*) 'ok'
endif
enddo
end program
Paradoxalement, ce sont les débats stériles qui se reproduisent le plus.
10/07/2016, 01h40
#33
mike.p
Date d'inscription
avril 2006
Messages
961
Re : Le nombre auquel je pense
Salut ,
@Obi : oui, c'est ça. Ca a pris nettement plus de temps à la main
@Médiat :
j'en ai quelques autres dans d'autres bases calculés en FB aussi
Cliquez pour afficher
base=3 ;
base=4 ; 1230: ok
base=5 ; 31240: ok
base=6 ;
base=7 ; 5326140: ok
base=8 ;
base=9 ; 573286140: ok
avec ce code javascript
Firefox, paramètres , ardoise javascript , copier coller , CTRL L.
Cliquez pour afficher
Code:
// Si vous voulez changer les bornes, c'est un peu lent pour calculer 9 : comptez 5 min,
// donc il faudra confirmer la prolongation de l'exécution plusieurs fois.
// Pour 10, ça doit être très très lent, le prog n'est pas optimisé du tout ...
// Comptez pas loin d'une heure ( donc à ne pas faire, ca bloque le navigateur 1 heure )
var base,trv,err,ntrv, i , j,c, don , i , str,xtr='',limi, deb,donref = [1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] ;
for( base=3 ; base <= 8 ; base ++ )
{
// ça finit forcément par 0 donc decaler la base
limi=Math.pow(base,base-1)-1 ;
deb=parseInt("1"+Array(base).join("0"),base-1),
xtr += ("\n\n base="+base+" ; debut: "+(deb*base)+" , fin: "+(limi*base)+"\n") ;
// deb = 64+2*16 ; limi = deb +2 ;
for( i = deb ; i < limi ; i++ )
{
str = i.toString(base)+"0" ;
don = Array.from(donref) ;
err = false ;
for( j=1 ; j < base ; j++ )
{
c = parseInt(str.substr(j-1,1),base) ;
if( don[c]==1 )
{
err = true ;
break ;
}
else
{
don[c] = 1 ;
}
}
if( err )
continue ;
err = false ;
ntrv = 0 ;
// inutile de tester la base avec le 0 final
for( j=2 ; j < base ; j++ )
{
ntrv = base*ntrv + parseInt(str.substr(0,j),base) ;
trv = ntrv/j ;
if( trv != Math.floor(trv) )
{
// xtr += (str+": "+j+" , "+trv+"\n") ;
err = true ;
break ;
}
}
if( err )
continue ;
// resultat dans xtr
xtr += (str+": ok\n") ;
}
}
var ztr ;
ztr = xtr ;
// ctrl L affichera la dernière variable mise à jour
ce serait cool de programmer la divisibilité toutes bases ( cad trouver une astuce pour le faire très vite ) mais ensuite voir un peu ce que donne la suite des bases ayant des solutions. Il y a un peu de travail, par exemple en base 5, finir par 2 ne signifie pas nécessairement que le nombre est pair.
Dernière modification par mike.p ; 10/07/2016 à 01h41.
Motif: balises code