Problème 3A+1 en batch
Posté : 10 juin 2021 12:30
Bonjour.
Je viens de m'inscrire sur le forum car je ne bosse pas du tout dans le domaine informatique mais je m'intéresse simplement à la programmation, j'ai vraiment les bases de chez bases dans plusieurs langage dont le batch mais je suis sans doute pas très expérimenté par rapport à vous.
Pour m'entrainer, j'ai fait un programme testant le problème 3A+1 (pour l'histoire c'est "on prend n'importe quel chiffre, si pair on le divise par 2 sinon on le multiplie par 3 et on y ajoute 1, on recommence avec le résultat, on finit toujours par revenir à 1, même si personne n'a réussi à prouver que ça fonctionnait pour tous les nombres existant).
J'ai réussi à faire ça, en demandant à l'utilisateur de rentrer le nombre qu'il veut tester, et ça fonctionne.
Maintenant j'aimerai améliorer le programme, pour qu'il teste de lui-même, d'abord 1, puis 2, puis 3, etc... sauf qu'il s'avère que c'est plus compliqué que je pensais, auriez-vous une idée ?
Je donne mon script actuel :
Je viens de m'inscrire sur le forum car je ne bosse pas du tout dans le domaine informatique mais je m'intéresse simplement à la programmation, j'ai vraiment les bases de chez bases dans plusieurs langage dont le batch mais je suis sans doute pas très expérimenté par rapport à vous.
Pour m'entrainer, j'ai fait un programme testant le problème 3A+1 (pour l'histoire c'est "on prend n'importe quel chiffre, si pair on le divise par 2 sinon on le multiplie par 3 et on y ajoute 1, on recommence avec le résultat, on finit toujours par revenir à 1, même si personne n'a réussi à prouver que ça fonctionnait pour tous les nombres existant).
J'ai réussi à faire ça, en demandant à l'utilisateur de rentrer le nombre qu'il veut tester, et ça fonctionne.
Maintenant j'aimerai améliorer le programme, pour qu'il teste de lui-même, d'abord 1, puis 2, puis 3, etc... sauf qu'il s'avère que c'est plus compliqué que je pensais, auriez-vous une idée ?
Je donne mon script actuel :
Code : Tout sélectionner
@echo off
:eofa
set /p result= Chiffre a tester:
:eof
set/a variable=result %%2
if %result%==1 (
echo %result%
echo FINI
goto eofa)
if %variable% ==0 (
echo %result%
set/a result = result /2
goto eof)
if not %variable% ==0 (
echo %result%
set/a result = 3*result +1
goto eof)