Le sujet s'inspire d'un devoir de mathématique qu'un de mes gamins vient de rendre à son professeur.
Composer et optimiser un code pour votre calculatrice ou pocket préféré qui permette à partir de la saisie d'un entier quelconque supérieur ou égal à 10 d'afficher (ou imprimer) le Nombre de Keith immédiatement suivant.
Petit rappel:
----------------
Un nombre de Keith est un nombre entier K à n chiffres ayant la propriété suivante:
* En partant des n chiffres qui compose K, on détermine une sorte de suite de Fibonacci où chaque terme est composée à partir de la somme des n termes précédents.
* Si cette suite contient à un moment donné le nombre K, on dit que ce nombre est un nombre de Keith.
Par exemple 28 est un nombre de Keith.
En effet la suite générée par cet entier à deux chiffres est :
2, 8, 10 (=2+8), 18 (=8+10), 28 (=10+18) , 46 =(18+28), 74 ...
Comme 28 appartient à la suite qu'il génère, 28 est donc bien un nombre de Keith.
Le choix de la méthode de saisie de l'entier (pris dans la pile, prompt, lecture automatique aread ou input, ... ) est laissée au libre arbitre de l'auteur du code et il pourra ainsi correspondre à la méthode la plus adaptée aux spécificités de la machine. Il en est de même pour la méthode d'affichage ou d'impression du résultat.
Le code que vous devez composer pour cet exercice prend comme argument dans la pile ou en sollicitant l'utilisateur un entier s'écrivant avec au moins deux chiffres (c'est à dire strictement supérieur à 9) et retourne en réponse le Nombre de Keith immédiatement suivant, voir ce même entier si celui-ci est effectivement un Nombre de Keith.
L'idée sous-jacente étant cependant de pouvoir facilement déterminer une suite de nombres de Keith, un mécanisme simple de continuation vers la recherche du nombre suivant devra être prévu par une disposition simple (appuis sur la touche Run/Stop, ENTER etc... ) qui devra être précisée.
Afin de se faire une juste idée de l'efficacité des algorithmes utilisés, merci d'indiquer le temps approximatif mis par votre pocket préféré pour déterminer le nombre de Keith suivant immédiatement 70, 700 et 7000.
Si toute fois cela est possible - certaines machines très vétustes régulièrement évoquées sur ce forum pourrait avoir quelque difficulté à exprimer un résultat avant la saint-glinglin - pour 70000, 700000, 700000 etc...