Objectif

Réaliser un programme permettant de calculer les diviseurs d'un nombre quelconque avec l'IDE Thonny.

Pour comprendre les diviseurs, liens vers une vidéo montrant la décomposition d'un nombre: https://www.youtube.com/watch?v=k0rhj8fwdjs

Un exemple:

>>> %Run txt.py
Les diviseurs de  120  sont  [1, 2, 2, 2, 3, 5]

Procédure

Etape 1 - Algorigrammer

Réaliser un schéma logique de votre programme. Pour vous aidez:

Mon schéma logique ressemble à cela:

# Diviseur
#
#rappel
#
# Permiers nbre premiers=
# 1, 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61,
# 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137,
# 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211,
# 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, etc...
#
#saisie
saisir un nbre entier = nbre

#initialisation
#creation liste contenant 1
diviseur=[1]
# on commence par i=2 car tous les nmbres sont divisiblent par 1 ;)
i=2

#boucle tant que i <=nbre
diviser nbre en commencant par i=2 

   si reste = 0:
      mettre i dans la liste des diviseurs
      
      faire la division en mettre ce résultat dans nbre= nbre/i
      reprendre la boucle tant que avec le meme i mais un nouveau nombre

   sinon :
      'en conclure que le nbre n'est 
      incrementer i (au debut)2 de +1

 

Etape 2 - Scripter

L'idée est de réaliser ici un premier jet. Priorité aux boucles et aux variables. Vous noterez l'usage des listes sous python. Pour vous aider voir ici: https://www.courspython.com/introduction-python.html#quelques-bases-rapides-en-python

#Diviseur 
# Saisie

a=120
i=2
print (a)

diviseura=[1]

while i<=a:
    if a%i ==0:
        diviseura.append(i)
        a=a/i
    else:
        i=i+1
print("Les diviseurs sont ",diviseura)

 

Etape 3 - Améliorer et commenter

Tout est perfectible, pour ici je dirais:

  • Améliorer les impressions et les commentaires
  • Permettre le choix du nombre (Input)
#Diviseur 
# Saisie

a=int(input("Saisir le premier nombre entier: "))

#initialisation
i=2
diviseura=[1]
#uniquement pour garder une valeur de la valeur initiale de a pour le print final
aini=a

while i<=a:
    if a%i ==0:
        diviseura.append(i)
        a=a/i
    else:
        i=i+1
print("Les diviseurs de ",aini," sont ",diviseura)