Il s'agit d'un problème de programme efficace ou inefficace dont voici les
lignes de code:
lesfin:[]$for n in [11,101,1001,2002,3003,4004,5005,6006,7007,8008,9009] do
block(
arret:oddp(apply("+",map(eval_string,charlist(string(n))))),
for i:n step n thru 10^19 while not arret do block(
arret: oddp(apply("+",map(eval_string,charlist(string(i))))),
if arret then push([i/n-1,n],lesfin)))$
elapsed_run_time();
Elles évaluent ceci:
* un nombre est digitalement paire si la somme de ces chiffres est paire ->
arret:oddp(apply("+",map(eval_string,charlist(string(n)))))
* on regarde les multiples successifs d'un nombre digitalement paire -> for
i:n step n thru 10^19 while not arret do block( avec thru 10^19 comme test
d'arrêt en parachute ventral...
* on détermine le nombre de ces multiples digitalement paire jusqu'au
premier non paire ->arret:
oddp(apply("+",map(eval_string,charlist(string(i))))),
* ce nombre est l'"ordre" -> push([i/n-1,n],lesfin)))
Que vaut cet ordre? etc...
J'explore quelque nombres pour voir: ->for n in
[11,101,1001,2002,3003,4004,5005,6006,7007,8008,9009]
Voilà le contexte.
Le problème c'est que tout cela me semble bien "lent" à l’exécution et
devient même de plus en plus lent quand je change la liste à explorer....
Y-a-t-il plus efficace que ces lignes?
Merci à tous par avance
------------------------------------------------------------------------------
_______________________________________________
Maxima-lang-fr mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/maxima-lang-fr