Algorithme

Réponses à toutes vos questions de la 2nde à la Terminale toutes séries
Odessa
Membre Naturel
Messages: 18
Enregistré le: 25 Avr 2012, 12:31

Algorithme

par Odessa » 25 Fév 2014, 08:55

Bonjour,

Je suis en Terminale S et je dois faire un algorithme.
Voici l'énoncé :
On considère un entier naturel n.
En partant de n, on construit une chaîne de nombres de la façon suivante :
Si un nombre k de la chaine est pair, le suivant s'obtient en divisant k par 2.
Si un nombre k de la chaine est impair, le suivant s'obtient en multipliant k par 3 et en ajoutant 1.
La chaine s'arrête quand elle atteint 1. On appelle alors longueur de la chaine le nombre d'entiers nécessaires pour atteindre le nombre 1.

Ecrire un algorithme sur algobox qui demande à l'utilisateur un entier et qui affiche l'integralité de la chaine a partir de cet entier ainsi que sa longueur.

Voici ce que j'ai fait :

Variables
k est du type nombre
m est du type nombre
compteur est du type nombre
debut algorithme
lire k
m prend la valeur floor(k)
afficher m
compteur prend la valeur 1
Tant que (m>1)
debut tant que
si (floor(m/2)==(m/2)) alors
debut si
m prend la valeur m/2
compteur prend la valeur compteur + 1
afficher ->
afficher m
fin si
sinon
debut sinon
m prend la valeur (3*m)+1
compteur prend la valeur compteur +1
afficher ->
afficher m
fin sinon
fin tant que
afficher "algorithme terminé"
afficher "longueur de la liste"
afficher m
fin algorithme

Mais je dois répondre à :

De quel entier (inferieur ou egal à 20) doit-on partir pour obtenir la chaine la plus longue ? Meme question pour un entier naturel inférieur ou egal à 100 (On pourra modifier l'algorithme initial).

Je ne comprend pas quoi modifier dans l'algorithme. Pouvez-vous m'aider ?

Merci.

Odessa.



Tiruxa
Membre Relatif
Messages: 460
Enregistré le: 22 Oct 2013, 09:21

par Tiruxa » 25 Fév 2014, 10:03

Bonjour, revoilà l'algorithme de Syracuse :)

Bon là il faut enlever la lecture de k et la remplacer par une boucle de k=2 à k=20 (ou k=100 pour la 2ème possibilité).
On peut enlever les affichages de m et se contenter d'afficher k et "compteur" en fin de boucle.
La fin de boucle n'intervenant que juste avant la fin d'algorithme.
REMARQUE :
Si l'on ne veut que la longueur maximale et non pas toutes les longueurs, on peut utiliser une variable "longueur max" qui sera initialisée à 1 au départ et prendra la valeur "longueur" en fin de boucle si "longueur" est supérieure à "longueur max".

 

Retourner vers ✎✎ Lycée

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 46 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite