Structure conditionnelle et boucle Tant que

Exercice 1

On considère l'algorithme :

DIVISEUR : teste si un entier saisi divise 60

Entrées : un entier
Sorties: message
Variables: n : entier

Début
$\quad$demander n
$\quad$Si $60 \%$ n $= 0$ alors
$\quad$ $\quad$ /* 60%n est le reste dans la division euclidienne de 60 par n */
$\quad$$\qquad$ afficher n " divise 60."
$\quad$sinon
$\quad$$\qquad$ afficher n " ne divise pas 60."
$\quad$finsi
Fin

Traduire cet algorithme en python (compléter ci-dessous) :

In [1]:
n = int(input('Entrer un entier : '))
if 60%n == 0:        #60%n est le reste dans la division euclidienne de 60 par n
    
    print(n, " divise 60.")
else:
    print(n, " ne divise pas 60.")
Entrer un entier : 23
23  ne divise pas 60.

Modifier ce programme python pour qu'il demande deux entiers et teste si le plus petit des deux divise le plus grand :

In [2]:
n = int(input('Entrer un entier : '))
m = int(input('Entrer un deuxième entier : '))
if n<m:
    if m%n == 0:
        print(n, " divise ", m)
    else:
        print(n, " ne divise pas ", m)
else:
    if n%m == 0:
        print(m, " divise ", n)
    else:
        print(m, " ne divise pas ", n)    
Entrer un entier : 50
Entrer un deuxième entier : 2
2  divise  50

Exercice 2

On considère l'algorithme :

TITRE ??? : rôle ???

Entrées : un entier
Sorties: ??
Variables: k, n : entiers

Début
$\quad$ k $\longleftarrow 1$
$\quad$demander n
$\quad$Tantque k $< 11$ faire
$\quad$$\qquad$ afficher n $\times$ k
$\quad$$\qquad$ k $\longleftarrow$ k$+1$
$\quad$fintantque
Fin

Quel est le rôle de cet algorithme ? Quel pourrait être sont titre ?

Réponse : cet algoritme affiche les 10 premiers multiples d'un entier entré n. Son titre pourrait être "Multiples" ou "Dix multiples"

Traduire l'algorithme en python :

In [3]:
k = 1
n = int(input("Entrer un entier : "))
while k<11:
    print(n*k)
    k = k+1
Entrer un entier : 7
7
14
21
28
35
42
49
56
63
70

Pöur ceux qui ont du mal sur les boucles :

  • copier le programme python ci-dessus
  • cliquer sur "edit this code"
  • supprimer le code présent et coller le programme python
  • cliquer sur "Visualize execution", puis "forwrd" pour une exécution pas à pas
  • observer le contenu des variables et l'affichage dans la partie droite

Exercice 3

Ecrire sur papier (ou dans le fichier algorithme.odt) un algorithme qui :

  • demande un entier
  • affiche tous les diviseurs de cet entier

Traduire l'algorithme ci-dessous en python :

Diviseurs d'un entier : rôle : affiche tous les diviseurs d'un entier entré

Entrées : un entier
Sorties: ses diviseurs
Variables: k, n : entiers

Début
$\quad$demander n
$\quad$ k $\longleftarrow 1$
$\quad$Tantque k $\leqslant$ n faire
$\quad$$\quad$Si k divise n alors
$\quad$$\quad$$\quad$afficher k
$\quad$$\quad$finsi
$\quad$$\quad$ k $\longleftarrow$ k$+1$
$\quad$fintantque
Fin

In [4]:
n = int(input("Entrer un entier : "))
k = 1
while k <= n:
    if n%k == 0:
        print(k)
    k = k+1
Entrer un entier : 50
1
2
5
10
25
50

Modifier ce programme pour afficher aussi le nombre de diviseurs de l'entier entré :

In [5]:
n = int(input("Entrer un entier : "))
k = 1
nombreDiviseurs = 0

while k <= n:
    if n%k == 0:
        print(k)
        nombreDiviseurs = nombreDiviseurs + 1
    k = k+1
print(n, "possede ", nombreDiviseurs , " diviseurs.")
Entrer un entier : 60
1
2
3
4
5
6
10
12
15
20
30
60
60 possede  12  diviseurs.

Exercice 4

Ecrire sur papier (ou dans le fichier algorithme.odt) un algorithme qui :

  • demande un entier
  • affiche tous les nombres premiers inférieurs ou égaux à cet entier

Traduire l'algorithme ci-dessous en python :

In [ ]: