Ch. 05 · Leçon 1
Mini-projets : PGCD, nombres premiers et vaccination
Ce que vous saurez faire
- →Concevoir des algorithmes itératifs combinant boucles et conditions
- →Décomposer un problème en sous-programmes (fonctions et procédures)
- →Manipuler des tableaux pour stocker et rechercher des données
- →Distinguer paramètre formel / effectif et passage par valeur / par variable
- →Implémenter en Python des algorithmes classiques (PGCD, primalité, décomposition)
id: 33-868-mini-projets-pgcd-premier-vaccination slug: 33-868-mini-projets-pgcd-premier-vaccination titre: 'Mini-projets : PGCD, nombres premiers et vaccination' chapitre: 5 chapitre_titre: Mini-projets et exercices de synthèse lecon: 1 niveau: 4eme-sci ordre: 1 prerequis:
- structures-iteratives
- tableaux
- sous-programmes
- chaines-de-caracteres duree_estimee_min: 90 mots_cles:
- pgcd
- nombres premiers
- decomposition
- facteurs premiers
- tableaux
- modules
- sous-programmes
- vaccination langages:
- analyse
- pascal
- python objectifs:
- Concevoir des algorithmes itératifs combinant boucles et conditions
- Décomposer un problème en sous-programmes (fonctions et procédures)
- Manipuler des tableaux pour stocker et rechercher des données
- Distinguer paramètre formel / effectif et passage par valeur / par variable
- Implémenter en Python des algorithmes classiques (PGCD, primalité, décomposition) status: published source_pdf: 33_868.pdf source_pages:
- 1
- 2
- 3
- 4
- 5 kind: recueil
Cette série de mini-projets met en pratique les structures itératives, les tableaux et les sous-programmes à travers des problèmes concrets : jeu de devinette, analyse de chaînes, calcul de PGCD, détection de nombres premiers et gestion d'une liste d'inscrits à une campagne de vaccination.
Exercice 1 — Deviner un nombre aléatoire
Écrire un algorithme puis une implémentation en Python permettant de deviner un nombre x choisi aléatoirement entre 1 et 100. L'utilisateur dispose de 10 essais maximum. À chaque essai, on indique si le nombre proposé est plus petit, plus grand ou égal au nombre cherché. Au bout de 10 essais sans trouver, afficher « Perdu ! » et le nombre à trouver.
Algorithme nombre
Début
X ← Aléa(1,100)
Nb ← 0
Répéter
Nb ← nb+1
Ecrire("Donner un entier entre 1 et 100:"), Lire(y)
Si x=y alors Ecrire("Bravo")
Sinon si y>x alors Ecrire("Plus petit")
Sinon Ecrire("Plus grand")
Finsi
Jusqu'à (x=y) ou (nb=10)
Si x≠y alors Ecrire("Perdu !, le nombre à trouver=", x)
Finsi
Fin
Déclaration des objets
| Objet | Type/Nature |
|---|---|
| x, y, nb | entier |
Algorithme nombre
Début
X ← Aléa(1,100)
Nb ← 0
Répéter
Nb ← nb+1
Ecrire("Donner un entier entre 1 et 100:"), Lire(y)
Si x=y alors Ecrire("Bravo")
Sinon si y>x alors Ecrire("Plus petit")
Sinon Ecrire("Plus grand")
Finsi
Jusqu'à (x=y) ou (nb=10)
Si x≠y alors Ecrire("Perdu !, le nombre à trouver=", x)
Finsi
Fin
Déclaration des objets
| Objet | Type/Nature |
|---|---|
| x, y, nb | entier |
from random import *
x = randint(1,100)
nb = 0
while True:
nb = nb+1
y = int(input('Donner un entier (entre 1-100) = '))
if y == x:
print('Bravo')
elif y > x:
print('plus petit !')
else:
print('Plus grand :')
if (x == y) or (nb == 10):
break
if x != y:
print('perdu !, le nombre à trouver=', x)
Exercice 2 — Compter voyelles et consonnes
Soit l'algorithme permettant de compter le nombre de voyelles dans une chaîne ch. Donner ensuite une implémentation en Python, puis ajouter le cas du comptage des consonnes.
Comptage des voyelles seules
Algorithme Lettres
Début
Ecrire("Donner ch="), lire(ch)
Nb ← 0
Pour i de 0 à long(ch)-1 faire
Si Majus(ch[i]) dans ["A","E","I","O","U","Y"] alors
nb ← nb+1
Finsi
FinPour
Ecrire('Le nombre de voyelles=', nb)
Fin
| Objet | Type/Nature |
|---|---|
| ch | chaîne |
| i, nb | entier |
Algorithme Lettres
Début
Ecrire("Donner ch="), lire(ch)
Nb ← 0
Pour i de 0 à long(ch)-1 faire
Si Majus(ch[i]) dans ["A","E","I","O","U","Y"] alors
nb ← nb+1
Finsi
FinPour
Ecrire('Le nombre de voyelles=', nb)
Fin
| Objet | Type/Nature |
|---|---|
| ch | chaîne |
| i, nb | entier |
ch = input('Donner ch=')
nb = 0
for i in range(len(ch)):
if ch[i].upper() in ['A','E','I','O','U','Y']:
nb = nb+1
print('Le nombre de voyelles=', nb)
Comptage des voyelles ET des consonnes
Algorithme Lettres2
Début
Ecrire("Donner ch="), lire(ch)
Nb ← 0
nbc ← 0
Pour i de 0 à long(ch)-1 faire
Si Majus(ch[i]) dans ["A","E","I","O","U","Y"] alors
nb ← nb+1
Sinon si Majus(ch[i]) dans ["A".."Z"] alors
nbc ← nbc+1
Finsi
FinPour
Ecrire('Le nombre de voyelles=', nb)
Ecrire('Le nombre de consonnes=', nbc)
Fin
| Objet | Type/Nature |
|---|---|
| ch | chaîne |
| i, nb, nbc | entier |
Algorithme Lettres2
Début
Ecrire("Donner ch="), lire(ch)
Nb ← 0
nbc ← 0
Pour i de 0 à long(ch)-1 faire
Si Majus(ch[i]) dans ["A","E","I","O","U","Y"] alors
nb ← nb+1
Sinon si Majus(ch[i]) dans ["A".."Z"] alors
nbc ← nbc+1
Finsi
FinPour
Ecrire('Le nombre de voyelles=', nb)
Ecrire('Le nombre de consonnes=', nbc)
Fin
| Objet | Type/Nature |
|---|---|
| ch | chaîne |
| i, nb, nbc | entier |
ch = input('Donner ch=')
nb = 0
nbc = 0
for i in range(len(ch)):
if ch[i].upper() in ['A','E','I','O','U','Y']:
nb = nb+1
elif "A" <= ch[i].upper() <= "Z":
nbc = nbc+1
print('Le nombre de voyelles=', nb)
print('Le nombre de consonnes=', nbc)
Exercice 3 — Chaîne composée uniquement de chiffres
Écrire un script Python et un algorithme qui permet de saisir une chaîne, puis d'afficher si elle est composée uniquement de chiffres — sans utiliser la méthode isdigit().
Algorithme Chiffres
Début
Ecrire("Donner une chaine= ")
Lire(ch)
nb ← 0
pour i de 0 à long(ch)-1 faire
si (ch[i]) ∈ ["0".."9"] alors
nb ← nb+1
Finsi
Finpour
si nb = long(ch) alors
Ecrire(ch, "est composée uniquement de chiffres")
Sinon
Ecrire(ch, "n'est pas composée uniquement de chiffres")
Finsi
Fin
| Objet | Type/Nature |
|---|---|
| ch | chaîne |
| i, nb | entier |
Algorithme Chiffres
Début
Ecrire("Donner une chaine= ")
Lire(ch)
nb ← 0
pour i de 0 à long(ch)-1 faire
si (ch[i]) ∈ ["0".."9"] alors
nb ← nb+1
Finsi
Finpour
si nb = long(ch) alors
Ecrire(ch, "est composée uniquement de chiffres")
Sinon
Ecrire(ch, "n'est pas composée uniquement de chiffres")
Finsi
Fin
| Objet | Type/Nature |
|---|---|
| ch | chaîne |
| i, nb | entier |
ch = input('Donner une chaine=')
nb = 0
for i in range(len(ch)):
if "0" <= ch[i] <= "9":
nb = nb+1
if len(ch) == nb:
print(ch, ' est composée uniquement de chiffres')
else:
print(ch, " n'est pas composée uniquement de chiffres")
Variantes avec isdigit()
# Solution 1 : caractère par caractère
ch = input('Donner une chaine=')
nb = 0
for i in range(len(ch)):
if ch[i].isdigit(): # équivalent à "0" <= ch[i] <= "9"
nb = nb+1
if len(ch) == nb:
print(ch, ' est composée uniquement de chiffres')
else:
print(ch, " n'est pas composée uniquement de chiffres")
# Solution 2 : sur la chaîne entière
ch = input('Donner une chaine=')
if ch.isdigit():
print(ch, ' est composée uniquement de chiffres')
else:
print(ch, " n'est pas composée uniquement de chiffres")
Exercice 4 — Moyenne et maximum d'une classe
Écrire un script Python puis un algorithme permettant de calculer la moyenne d'une classe de n élèves.
Exemple :
Nbre élèves = 3
Moyenne = 10.5
Moyenne = 13.2
Moyenne = 18
La moyenne de la classe = 13.91
Algorithme Moyenne
Début
Ecrire("Nbre élèves=")
Lire(n)
Pour i de 0 à n-1 faire
Ecrire("Moyenne=")
Lire(T[i])
Finpour
S ← 0
Pour i de 0 à n-1 faire
S ← S+T[i]
FinPour
Moy ← S/n
Ecrire("moy classe=", Moy)
Fin
TDO
| Objet | Type/Nature |
|---|---|
| i, n | entier |
| T | tableau de n réels |
| S, moy | réel |
Algorithme Moyenne
Début
Ecrire("Nbre élèves=")
Lire(n)
Pour i de 0 à n-1 faire
Ecrire("Moyenne=")
Lire(T[i])
Finpour
S ← 0
Pour i de 0 à n-1 faire
S ← S+T[i]
FinPour
Moy ← S/n
Ecrire("moy classe=", Moy)
Fin
TDO
| Objet | Type/Nature |
|---|---|
| i, n | entier |
| T | tableau de n réels |
| S, moy | réel |
from numpy import *
n = int(input('Nombre élèves='))
T = array([float()]*n)
for i in range(n):
T[i] = float(input('moy='))
s = 0
for i in range(n):
s = s+T[i]
moy = s/n
print('moy de la classe=', moy)
Variante : calcul du maximum (meilleure moyenne)
Écrire un script Python puis un algorithme permettant de calculer la meilleure moyenne dans une classe.
Algorithme Maximum
Début
Ecrire("Nbre élèves=")
Lire(n)
Pour i de 0 à n-1 faire
Ecrire("Moyenne=")
Lire(T[i])
Finpour
Max ← T[0]
Pour i de 1 à n-1 faire
Si T[i] > max alors
Max ← T[i]
Finsi
FinPour
Ecrire("Le max=", Max)
Fin
| Objet | Type/Nature |
|---|---|
| i, n | entier |
| T | tableau de n réels |
| Max | réel |
Algorithme Maximum
Début
Ecrire("Nbre élèves=")
Lire(n)
Pour i de 0 à n-1 faire
Ecrire("Moyenne=")
Lire(T[i])
Finpour
Max ← T[0]
Pour i de 1 à n-1 faire
Si T[i] > max alors
Max ← T[i]
Finsi
FinPour
Ecrire("Le max=", Max)
Fin
| Objet | Type/Nature |
|---|---|
| i, n | entier |
| T | tableau de n réels |
| Max | réel |
from numpy import *
n = int(input('Nbre élève='))
T = array([float()]*n)
for i in range(n):
T[i] = float(input('moy='))
max = T[0]
for i in range(n):
if T[i] > max:
max = T[i]
print('le max est=', max)
Exercice 5 — PGCD pour un barreaudage de fenêtre
On veut poser un barreaudage pour une fenêtre de longueur L et de hauteur H, de manière que la distance maximale D entre les barreaux soit identique sur toute la longueur et sur toute la hauteur.
Solution : calculer le PGCD (Plus Grand Commun Diviseur) de L et H.
Travail à faire : écrire un algorithme puis un script Python permettant de saisir 2 entiers (L et H en cm), de calculer leur PGCD à l'aide d'un module dédié, puis d'afficher la distance maximale D entre les barreaux équidistants.
Exemple : PGCD(15, 27)
| N° | Instruction | a | b |
|---|---|---|---|
| 01 | ··· | ? | ? |
| 02 | ··· | ? | ? |
| 03 | ··· | ? | ? |
| 04 | ··· | ? | ? |
| 05 | ··· | ? | ? |
| 06 | ··· | ? | ? |
Algorithme barreaudage
DEBUT
Ecrire("L="), Lire(L)
Ecrire("H="), Lire(H)
Ecrire("Distance D=", pgcd(L,H))
FIN
Fonction pgcd(a, b : entier) : entier
DEBUT
Tant que a ≠ b faire
Si a > b alors a ← a-b Finsi
Si b > a alors b ← b-a Finsi
FinTantQue
Retourner a
FIN
TDO
| Objet | Type/Nature |
|---|---|
| L, H | entier |
| pgcd | fonction |
Algorithme barreaudage
DEBUT
Ecrire("L="), Lire(L)
Ecrire("H="), Lire(H)
Ecrire("Distance D=", pgcd(L,H))
FIN
Fonction pgcd(a, b : entier) : entier
DEBUT
Tant que a ≠ b faire
Si a > b alors a ← a-b Finsi
Si b > a alors b ← b-a Finsi
FinTantQue
Retourner a
FIN
TDO
| Objet | Type/Nature |
|---|---|
| L, H | entier |
| pgcd | fonction |
L = int(input('L='))
H = int(input('H='))
def pgcd(a, b):
while a != b:
if a > b:
a = a-b
if b > a:
b = b-a
return a
print('Distance maximale D=', pgcd(L, H))
Exercice 6 — Nombres premiers entre 1 et 99
- Écrire un module Python
premier(n)qui retourneTruesinest premier,Falsesinon. - Afficher tous les entiers premiers entre 1 et 99.
Algorithme nbrpremiers
DEBUT
Pour i de 1 à 99 faire
si premier(i) = vrai alors
Ecrire(i)
Finsi
FinPour
FIN
Fonction premier(n : entier) : booléen
DEBUT
nb ← 0
Pour i de 1 à n faire
Si n mod i = 0 Alors nb ← nb+1 Finsi
FinPour
Retourner nb = 2
FIN
TDO globaux
| Objet | Type/Nature |
|---|---|
| i | entier |
| premier | fonction |
TDO locaux (premier)
| Objet | Type/Nature |
|---|---|
| i, nb | entier |
Algorithme nbrpremiers
DEBUT
Pour i de 1 à 99 faire
si premier(i) = vrai alors
Ecrire(i)
Finsi
FinPour
FIN
Fonction premier(n : entier) : booléen
DEBUT
nb ← 0
Pour i de 1 à n faire
Si n mod i = 0 Alors nb ← nb+1 Finsi
FinPour
Retourner nb = 2
FIN
TDO globaux
| Objet | Type/Nature |
|---|---|
| i | entier |
| premier | fonction |
TDO locaux (premier)
| Objet | Type/Nature |
|---|---|
| i, nb | entier |
def premier(n):
nb = 0
for i in range(1, n+1):
if n % i == 0:
nb = nb+1
return nb == 2
# équivalent :
# if nb == 2:
# return True
# else:
# return False
for i in range(1, 100):
if premier(i): # if premier(i) == True:
print(i)
Exercice 7 — Décomposition en facteurs premiers
Écrire l'algorithme d'un programme qui cherche puis affiche la décomposition en produit de facteurs premiers d'un entier n donné.
Exemple : 132 = 2 × 2 × 3 × 11
| N° | Instruction | n | i | affichage |
|---|---|---|---|---|
| 01 | ··· | ? | ? | ? |
| 02 | ··· | ? | ? | ? |
| 03 | ··· | ? | ? | ? |
| 04 | ··· | ? | ? | ? |
| 05 | ··· | ? | ? | ? |
| 06 | ··· | ? | ? | ? |
| 07 | ··· | ? | ? | ? |
Algorithme facteurs
DEBUT
Ecrire("n à décomp=")
Lire(n)
afficher_fact(n)
FIN
Procédure afficher_fact(n : entier)
DEBUT
i ← 2
Répéter
Tant que n mod i = 0 faire
Ecrire(i)
n ← n div i
FinTantque
i ← i+1
Jusqu'à n = 1
FIN
TDO
| Objet | Type/Nature |
|---|---|
| n | entier |
| afficher_fact | procédure |
TDO locaux
| Objet | Type/Nature |
|---|---|
| i | entier |
Algorithme facteurs
DEBUT
Ecrire("n à décomp=")
Lire(n)
afficher_fact(n)
FIN
Procédure afficher_fact(n : entier)
DEBUT
i ← 2
Répéter
Tant que n mod i = 0 faire
Ecrire(i)
n ← n div i
FinTantque
i ← i+1
Jusqu'à n = 1
FIN
TDO
| Objet | Type/Nature |
|---|---|
| n | entier |
| afficher_fact | procédure |
TDO locaux
| Objet | Type/Nature |
|---|---|
| i | entier |
def afficher_fact(x):
i = 2
while True:
while x % i == 0:
print(i, end=" ")
x = x//i
i = i+1
if x == 1:
break
n = int(input('n='))
afficher_fact(n)
Autre méthode (condition d'arrêt sur le while externe) :
def afficher_fact(x):
i = 2
while x != 1:
while x % i == 0:
print(i, end=" ")
x = x//i
i = i+1
n = int(input('n='))
afficher_fact(n)
Exercice 8 — Décomposition stockée dans un tableau
Modifier le programme de l'exercice 7 pour :
- Saisir un entier
nentre 10 et 1000 (avec contrôle de saisie), - Remplir un tableau
Tavec les facteurs premiers den, - Afficher la décomposition à partir de
T.
Le problème sera décomposé en trois modules : Saisir, Remplir_fact, Afficher_fact.
Algorithme principal et procédures
Algorithme Décomposition
DEBUT
Saisir(n)
Remplir_fact(T, i, n)
Afficher_fact(T, i)
FIN
Nouveaux Types
TAB = tableau de 10 entiers
T.D.O. globaux
| Objet | Type/Nature |
|---|---|
| i, n | Entier |
| T | TAB |
| Saisir, remplir_fact, afficher_fact | Procédures |
Procédure saisir(@n : entier)
DEBUT
Répéter
Ecrire("Donner un entier (entre 10 et 1000)=")
lire(n)
Jusqu'à n >= 10 et n <= 1000
FIN
Procédure Remplir_fact(@T : tab, @j : entier, x : entier)
DEBUT
i ← 2
j ← -1
tantque x ≠ 1 faire
si x mod i = 0 alors
j ← j+1
T[j] ← i
x ← x div i
sinon
i ← i+1
Finsi
FinTantque
FIN
T.D.O. locaux : i : Entier
Procédure afficher_fact(T : tab, j : entier)
DEBUT
Pour i de 0 à j-1 faire
Ecrire(T[i], "x")
Finpour
Ecrire(T[j])
FIN
T.D.O. locaux : i : Entier
Implémentation Python
from numpy import *
def saisir():
while True:
n = int(input('Donner n à décomposer='))
if 10 <= n <= 1000:
break
return n
def remplir_fact(x):
i = 2
j = -1
while x != 1:
if x % i == 0:
j = j+1
T[j] = i
x = x//i
else:
i = i+1
return T, j
def afficher_fact(T, j):
for i in range(j):
print(T[i], 'x', end=' ')
print(T[j])
T = array([int()]*10)
n = saisir()
T, i = remplir_fact(n)
afficher_fact(T, i)
Exercice 9 — Inscription à la campagne de vaccination
On souhaite réaliser un programme d'inscription à la campagne de vaccination contre le covid-19. Le script saisit un numéro d'identification et le stocke dans un tableau ID :
- Si le numéro n'existe pas dans le tableau, il est ajouté ;
- Si le numéro existe déjà, il n'est pas ajouté et on demande un autre numéro.
Exemple d'exécution :
Donner le nombre de personnes = 3
Donner ID n°0 : 09990999
Donner ID n°1 : 08888888
Donner ID n°2 : 08888888 ← déjà saisi, refusé
Donner ID n°2 : 07777777
Travail à faire : écrire un algorithme puis un script Python permettant de saisir n puis les numéros ID (chaînes de caractères) à inscrire dans un tableau ID.
Fonction de recherche
Fonction chercher(x : entier, T : TAB, n : Entier) : booléen
DEBUT
Trouve ← faux
i ← 0
Répéter
Si T[i] = x alors trouve ← vrai Finsi
i ← i+1
Jusqu'à trouve ou i = n
Retourner trouve
FIN
| Objet | Type/Nature |
|---|---|
| Trouve | Booléen |
| i | entier |
Fonction chercher(x : entier, T : TAB, n : Entier) : booléen
DEBUT
Trouve ← faux
i ← 0
Répéter
Si T[i] = x alors trouve ← vrai Finsi
i ← i+1
Jusqu'à trouve ou i = n
Retourner trouve
FIN
| Objet | Type/Nature |
|---|---|
| Trouve | Booléen |
| i | entier |
def chercher(x, T, n):
trouve = False
i = 0
while True:
if T[i] == x:
trouve = True
i = i+1
if trouve or i == n:
break
return trouve
Remplissage du tableau ID avec contrôle des doublons
DEBUT
Ecrire("Donner le nombre de personnes"), lire(n)
Ecrire("Donner ID n°0:"), lire(ID[0])
Pour i de 1 à n-1 faire
Répéter
Ecrire("Donner ID n°", i, ":"), lire(ID[i])
Jusqu'à chercher(ID[i], ID, i) = faux
FinPour
FIN
Nouveau type : TAB = tableau de n chaînes
T.D.O.
| Objet | Type/Nature |
|---|---|
| n, i | Entier |
| chercher | Fonction |
| ID | TAB |
DEBUT
Ecrire("Donner le nombre de personnes"), lire(n)
Ecrire("Donner ID n°0:"), lire(ID[0])
Pour i de 1 à n-1 faire
Répéter
Ecrire("Donner ID n°", i, ":"), lire(ID[i])
Jusqu'à chercher(ID[i], ID, i) = faux
FinPour
FIN
Nouveau type : TAB = tableau de n chaînes
T.D.O.
| Objet | Type/Nature |
|---|---|
| n, i | Entier |
| chercher | Fonction |
| ID | TAB |
from numpy import *
n = int(input('Donner le nombre de personnes='))
ID = array(n*[str()])
print('Donner ID n°0 :')
ID[0] = int(input())
for i in range(1, n):
while True:
print('Donner ID n°', i, ':')
ID[i] = int(input())
if chercher(ID[i], ID, i) == False:
break
Extension : contrôle de saisie (8 chiffres exactement)
Ajouter un contrôle de saisie sur les identificateurs : chaque ID doit être composé de 8 chiffres exactement.
Répéter
Ecrire("Donner ID n°0:"), lire(ID[0])
Jusqu'à long(ID[0]) = 8 et EstNum(ID[0])
Pour i de 1 à n-1 faire
Répéter
Ecrire("Donner ID n°", i, ":"), lire(ID[i])
Jusqu'à chercher(ID[i], ID, i) = faux
et long(ID[i]) = 8
et EstNum(ID[i])
FinPour
Répéter
Ecrire("Donner ID n°0:"), lire(ID[0])
Jusqu'à long(ID[0]) = 8 et EstNum(ID[0])
Pour i de 1 à n-1 faire
Répéter
Ecrire("Donner ID n°", i, ":"), lire(ID[i])
Jusqu'à chercher(ID[i], ID, i) = faux
et long(ID[i]) = 8
et EstNum(ID[i])
FinPour
while True:
print('Donner ID n° 0:')
ID[0] = int(input())
if len(str(ID[0])) == 8 and ID[0].isdigit():
break
for i in range(1, n):
while True:
print('Donner ID n°', i, ':')
ID[i] = int(input())
if (chercher(ID[i], ID, i) == False
and len(str(ID[i])) == 8
and ID[i].isdigit()):
break
Récapitulatif
| Exercice | Notion clé travaillée |
|---|---|
| 1 | Boucle Répéter ... Jusqu'à, génération aléatoire |
| 2 | Parcours de chaîne, conditions multiples |
| 3 | Test caractère par caractère, méthodes de chaînes |
| 4 | Tableaux, somme, recherche du maximum |
| 5 | Fonction, algorithme du PGCD par différences |
| 6 | Fonction booléenne, test de primalité |
| 7 | Procédure, boucles imbriquées, division entière |
| 8 | Décomposition modulaire, passage par variable / valeur |
| 9 | Tableau de chaînes, recherche, contrôle de saisie |
Quiz : PGCD, nombres premiers, applications
Vérifiez vos connaissances sur les algorithmes arithmétiques classiques au programme.
Quiz (5 questions)
Le **PGCD** de deux entiers `a` et `b` peut se calculer par :
Un entier `n` est **premier** si :
Pour optimiser la **vérification de primalité** d'un nombre `n`, il suffit de tester les diviseurs jusqu'à :
Quelle est la **valeur** de `PGCD(15, 27)` ?
Quel **type** de structure de données est le plus adapté pour stocker la liste des diviseurs de `n` au fur et à mesure qu'on les trouve ?