Bonjour/Bonsoir !
Je dois créer un programme sur la suite de Syracuse cependant c'est la première fois que j'utilise Python et je suis un peu perdue . Mes deux essais ne sont pas concluant et je ne comprends pas pourquoi .
Suite de Syracuse : Suite d'entiers naturels définie de la manière suivante :
On part d'un nombre entier plus grand que zéro ; s'il est pair, on le divise par 2 ; s'il est impair, on le multiplie par 3 et on ajoute 1. En répétant l'opération, on obtient une suite d'entiers positifs dont chacun ne dépend que de son prédécesseur.
Voici mes travaux :
i= imput ("Donner votre nombre i")
def Syracuse(u,n) :
for i in range(1,n+1):
if u%2 == 0: u = u/2
else: u = 3*u + 1
return u
et
def transfo (n):
if (n%2)==0:
return n/2
else:
return 3*n+1
Je sais vraiment pas quoi faire , s'il vous plaît aidez moi .
Merci d'avance !
salut,
"Je dois créer un programme sur la suite de Syracuse"
ce n'est pas assez precis
poser une question claire
commencer par un algorithme (python n'est pas au programme du bac)
quand on debute en python commencer avec des exercices plus simples
Bonjour.
Petit script Python, à modifier à volonté...
# -- syracuse ------------------------------------------------------------------
#
# Description : calcul d'une suite de Syracuse
#
# Parameters :
#
# Return :
#
# Notes : - definition d'une suite de Syracuse :
#
# u(0) = entier > 0
#
# et :
#
# u(n+1) = u(n) / 2 si u(n) est pair
# ou :
# u(n+1) = 3u(n) + 1 si u(n) est impair
#
def syracuse() :
# saisie de u(0) en valeur entiere
u = int(input(" Entrez u(0) : "))
# nombre de termes calcules
n = 0
# on sort de la boucle des que u(n) = 1 (A MODIFIER suivant enonce)
while u != 1 :
# calcul de u(n+1)...
# u(n) pair ?
if u % 2 == 0 :
# oui : u(n+1) = u(n) / 2
u /= 2
else :
# non : u(n+1) = 3 u(n) + 1
u = 3 * u + 1
# entier suivant
n += 1
# affichage
print(" u(", n, ") = ", u)
...
# appel de la fonction syracuse()
syracuse()
une approche avec Xcas
fonction VolComplet(n)
var L;
L:=n;
tantque n!=1 faire
si irem(n,2)==0 alors
n:=n/2;
sinon
n:=3*n+1;
fsi;
L:=L,n;
ftantque;
retourne [L]
ffonction:;
fonction TempsVol(n)
retourne dim(VolComplet(n))-1
ffonction:;
fonction AltitudeMax(n)
retourne max(VolComplet(n))
ffonction
salut
un essai sous excel vba donne en quelques lignes
Bonjour , oui en effet je n'est pas été assez précise .Je viens de démarrer Python et mon professeur nous as donner une série d'exercice à faire et celui là en fait partie .Concernant vos travaux , j'avoue n'avoir rien compris des deux derniers .Mais je vous remercie de votre aide !
input ou imput ?
i= input ("Donner votre nombre i")
Attention, en Python, toutes entrées sont des chaines de caractère., il faut donc mettre :
i= int(input ("Donner votre nombre i") )
@pascal16, Bonjour.
>>>
>>> a = input("a : ")
a : 123
>>> type(a)
<type 'int'>
>>> b = input("b : ")
b : 45.6
>>> type(b)
<type 'float'>
>>> c = input("c : ")
c : "coucou"
>>> type(c)
<type 'str'>
>>>
# -- syracuse ------------------------------------------------------------------
#
# Description : calcul d'une suite de Syracuse
#
# Parameters :
#
# Return :
#
# Notes : - definition d'une suite de Syracuse :
#
# u(0) = entier > 0
#
# et :
#
# u(n+1) = u(n) / 2 si u(n) est pair
# ou :
# u(n+1) = 3u(n) + 1 si u(n) est impair
#
def syracuse() :
# saisie de u(0) en valeur entiere
u = int(input(" Entrez u(0) : "))
# nombre de termes calcules
n = 0
# on sort de la boucle des que u(n) = 1 (A MODIFIER suivant enonce)
while u != 1 :
# calcul de u(n+1)...
# u(n) pair ?
if u % 2 == 0 :
# oui : u(n+1) = u(n) / 2
u /= 2
else :
# non : u(n+1) = 3 u(n) + 1
u = 3 * u + 1
# entier suivant
n += 1
# affichage
print(" u(", n, ") = ", u)
...
# appel de la fonction syracuse()
syracuse()
# -- syracuse ------------------------------------------------------------------
#
# Description : calcul d'une suite de Syracuse
#
# Parameters :
#
# Return :
#
# Notes : - definition d'une suite de Syracuse :
#
# u(0) = entier > 0
#
# et :
#
# u(n+1) = u(n) / 2 si u(n) est pair
# ou :
# u(n+1) = 3u(n) + 1 si u(n) est impair
#
def syracuse() :
# saisie de u(0) en valeur entiere
u = int(input(" Entrez u(0) : "))
# nombre de termes calcules
n = 0
# on sort de la boucle des que u(n) = 1 (A MODIFIER suivant enonce)
while u != 1 :
# calcul de u(n+1)...
# u(n) pair ?
if u % 2 == 0 :
# oui : u(n+1) = u(n) / 2
u /= 2
else :
# non : u(n+1) = 3 u(n) + 1
u = 3 * u + 1
# entier suivant
n += 1
# affichage
print(" u(", n, ") = ", u)
...
# appel de la fonction syracuse()
syracuse()
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :