On appelle suite de Syracuse une suite d’entiers naturels définie de la manière suivante :
En répétant l’opération, on obtient une suite d’entiers strictement positifs dont chacun ne dépend que de son prédécesseur.
Pour une suite de Syracuse, le premier élément est noté \(u_{0}\). On définit trois métriques :
Ces métriques sont illustrées par la figure ci dessous.
Créer un fichier ex04-suites-syracuse.py
.
Selon la convention de structuration des modules, ce fichier sera structuré en quatre parties :
L’objectif est d’écrire une fonction syracuse()
:
La structure est la suivante
def syracuse(n):
pass
# initialisation des variables
# tant que la suite n'est pas terminée :
# - calcul du n suivant
# - mise à jour du temps de vol (tv)
# - mise à jour du temps de vol en altitude (tva) si nécessaire
# - mise à jour de l'altitude maximale (am)
# retour de tv, tva, am
def main():
# exemple d'exécution
= 15
n = syracuse(n)
tv, tva, am print(n, tv, tva, am)
if __name__ == "__main__":
main()
Utilisez la fonction syracuse()
pour calculer les suites pour \(n = 15\) et \(n = 127\). Vérifier que les métriques obtenues sont conformes aux valeurs ci dessus.
Utilisez ensuite la fonction syracuse()
pour calculer :
Python permet de retourner plusieurs valeurs simultanément. L’explication détaillée sera abordée dans le chapitre Les tuples.
Par exemple, on peut définir une fonction qui retourne le carré et le cube d’un nombre entier :
def square_and_cube(n):
return n**2, n**3
= square_and_cube(3) x, y