« Suite de Syracuse » : différence entre les versions
Aller à la navigation
Aller à la recherche
(Page créée avec « 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|https://fr.wikipedia.org/wiki/Conjecture_de_Syracuse}} == Calcul de la suite =... ») |
m (→Voir aussi) |
||
| (3 versions intermédiaires par le même utilisateur non affichées) | |||
| Ligne 3 : | Ligne 3 : | ||
== Calcul de la suite == | == Calcul de la suite == | ||
=== PowerShell === | === PowerShell, version 1 === | ||
Reprise du script du site de Chevalier-Info, https://www.chevalier-info.com/post/powershell-calculer-la-conjecture-de-syracuse | Reprise du script du site de Chevalier-Info, https://www.chevalier-info.com/post/powershell-calculer-la-conjecture-de-syracuse | ||
<source> | <source> | ||
| Ligne 20 : | Ligne 20 : | ||
} | } | ||
Else{ | Else{ | ||
write-host "Le nombre 1 est | write-host "Le nombre 1 est atteint !" | ||
write-host "Liste des étapes : " | write-host "Liste des étapes : " | ||
$tableau | $tableau | ||
| Ligne 39 : | Ligne 39 : | ||
Calcul $nombre | Calcul $nombre | ||
} | } | ||
</source> | |||
=== PowerShell, version 2 === | |||
<source> | |||
#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" | |||
} | |||
} | |||
clear-host | |||
$nombres = 15 | |||
foreach ($nombre in $nombres) { | |||
$tableau = New-Object System.Collections.ArrayList | |||
write-host -f green "Début du calcul avec :" $nombre | |||
Calcul $nombre | |||
} | |||
</source> | |||
=== 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 | |||
<source> | |||
#!/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)) | |||
</source> | </source> | ||
| Ligne 45 : | Ligne 128 : | ||
[[Catégorie:PowerShell]] | [[Catégorie:PowerShell]] | ||
[[Catégorie:Python]] | |||
[[Catégorie:Mathématique]] | |||
Dernière version du 9 janvier 2024 à 19:04
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, version 1
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
}
PowerShell, version 2
#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"
}
}
clear-host
$nombres = 15
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))