« Suite de Syracuse » : différence entre les versions
Aller à la navigation
Aller à la recherche
m (→PowerShell) |
m (→Voir aussi) |
||
Ligne 91 : | Ligne 91 : | ||
[[Catégorie:PowerShell]] | [[Catégorie:PowerShell]] | ||
[[Catégorie:Python]] |
Version du 22 juillet 2022 à 14:11
La suite de Syracuse est une suite d'entiers naturels définie de la manière suivante : on part d'un nombre entier strictement positif ; s’il est pair, on le divise par 2 ; s’il est impair, on le multiplie par 3 et l'on ajoute 1. 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. (Source : wikipedia)
Calcul de la suite
PowerShell
Reprise du script du site de Chevalier-Info, https://www.chevalier-info.com/post/powershell-calculer-la-conjecture-de-syracuse
# Fonction pour le calcul de suites de Syracuse Function Calcul ($nombre) { if ($nombre % 2 -eq 0){ $resultat = $nombre / 2 [void]$tableau.Add($resultat) } Else{ $resultat = $nombre * 3 + 1 [void]$tableau.Add($resultat) } if ($resultat -ne 1){ Calcul $resultat } Else{ write-host "Le nombre 1 est atteint !" write-host "Liste des étapes : " $tableau $dureeduvol = $tableau.Count write-host "Durée du vol :" $dureeduvol $max = $tableau | measure -Maximum write-host "Altitude maximum :" $max.maximum write-host "Fin" } } # Partie principale Clear-Host $nombres = 1..12 foreach ($nombre in $nombres) { $tableau = New-Object System.Collections.ArrayList write-host -f green "Début du calcul avec :" $nombre Calcul $nombre }
Python
Reprise du script du site de Bibmath.net
- source : https://www.bibmath.net
- adresse du code : https://www.bibmath.net/forums/viewtopic.php?id=2799
#!/usr/bin/env python # -*- coding: utf-8 -*- print (' *** Vol de la suite de Syracuse ***\n') hauteurVol, tpsVol, tpsVolAlt, altMax, sortie = 0, 0, 0, 0, 0 # Saisie du nombre de départ while not sortie: try: depart = abs(int(input('Entrez la valeur de départ : '))) sortie = 1 except ValueError: print("Ce n'est pas un nombre, veuillez recommencer s'il vous plaît !") print() # Calculs valeur = depart while hauteurVol != 1 : if valeur % 2 == 0: valeur = valeur / 2 else: valeur = valeur * 3 + 1 if ((valeur <= depart) and (tpsVol > 0) and (tpsVolAlt == 0)): tpsVolAlt = tpsVol if (altMax < valeur): altMax = valeur hauteurVol = valeur tpsVol += 1 # Affichage des résultats lg = max(len(str(tpsVol)), len(str(tpsVolAlt)), len(str(altMax))) print() print ("Temps de vol : ", str(tpsVol).rjust(lg)) print ("Temps de vol en altitude : ", str(tpsVolAlt).rjust(lg)) print ("Altitude maximale : ", str(altMax).rjust(lg))