Inscription / Connexion Nouveau Sujet
Niveau première
Partager :

Python : programme de Syracuse

Posté par
TheQueenof75
24-01-18 à 21:59

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 !

Posté par
fm_31
re : Python : programme de Syracuse 24-01-18 à 22:13

Bonjour ,

je te propose une possibilité que tu peux modifier éventuellement

Python : programme de Syracuse

Python : programme de Syracuse

Python : programme de Syracuse

Posté par
alb12
re : Python : programme de Syracuse 25-01-18 à 08:57

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

Posté par
bbomaths
re : Python : programme de Syracuse 25-01-18 à 11:00

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()


A vous de créer l'algorithme en fonction de l'énoncé complet...

Posté par
alb12
re : Python : programme de Syracuse 25-01-18 à 13:29

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

Exemple avec n=15

VolComplet(15) renvoie [15,46,23,70,35,106,53,160,80,40,20,10,5,16,8,4,2,1]

TempsVol(15) renvoie 17

AltitudeMax(15) renvoie 160

Exemple avec 2018

VolComplet(2018):; // on n'affiche pas le resultat

TempsVol(2018) renvoie 112

AltitudeMax(2018) renvoie 9232

Posté par
flight
re : Python : programme de Syracuse 25-01-18 à 21:28

salut

un essai sous excel vba donne en quelques lignes

Citation :
Sub siracus()
n = InputBox("saisir une valeur de départ n >0 ")
v =  InputBox("saisir le nombre de valeurs voulues")

For i = 1 To v  

  If n Mod 2 = 0 Then
       x = x & " " & (n / 2)
       Else
       x = x & " " & (3 * n + 1)
  End If
  n = Split(x, " ")(UBound(Split(x, " ")))
  
Next
  
MsgBox x
End Sub

Posté par
alb12
re : Python : programme de Syracuse 25-01-18 à 22:10

@TheQueenof75
Que penses-tu de ce qui precede ?

Posté par
TheQueenof75
re : Python : programme de Syracuse 06-02-18 à 15:29

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 !

Posté par
alb12
re : Python : programme de Syracuse 06-02-18 à 17:20

vois donc avec ton prof.

Posté par
pascal16
re : Python : programme de Syracuse 06-02-18 à 20:17

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") )

Posté par
bbomaths
re : Python : programme de Syracuse 07-02-18 à 06:32

@pascal16, Bonjour.

Citation :
Attention, en Python, toutes entrées sont des chaines de caractère.


En Python 3.x : vrai

En Python 2.x : faux car la fonction input() interprète la chaine de caractères entrée, exemples :

>>>
>>> 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'>
>>>

Posté par
delco2
re : Python : programme de Syracuse 06-12-18 à 21:45

bbomaths @ 25-01-2018 à 11:00

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()


A vous de créer l'algorithme en fonction de l'énoncé complet...
bbomathsbbomaths
bbomaths @ 25-01-2018 à 11:00

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()






Bonjours a tous,
                                     Dans le code source plus haut , J'aimerais savoir si ils est possible de ajouter la possibilité que le programme fait la continuité seul  exemple on commence par le chiffres 2 si la réponse est 1 a la fin il continue seul avec le chiffres 3, ect ect.

Je sais déjà que les numéros on été tester 10^20 et plus mais je ne sais pas comment le faire cette boucle.

merci a tous de vos aide

A vous de créer l'algorithme en fonction de l'énoncé complet...



Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Inscription gratuite

Fiches en rapport

parmi 1675 fiches de maths

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !