Algorithme PGCD_par_soustraction
Var a, b : entier
Début
Lire(a, b)
// On garde toujours le plus grand dans a
Tantque (a != b) faire
Si (a > b) alors
a <- a - b
Sinon
b <- b - a
FinSi
Fintantque
Ecrire("PGCD = ", a)
Fin
12
18
PGCD = 6
--------------
[Fin de programme]
Tant qu'il reste quelque chose dans b :
Je remplace a par "ce qui reste quand je divise a par b"
Je mets l'ancien b à la place de a
Je continue avec le nouveau b
À la fin, quand b devient 0 → a est le PGCD
فكر في الخوارزمية بهذه الطريقة البسيطة:
| الخطوة | a | b | a > b ؟ | العملية | الـ a الجديد | الـ b الجديد | متساويان؟ |
|---|---|---|---|---|---|---|---|
| 0 | 48 | 18 | نعم | a ← 48 − 18 | 30 | 18 | لا |
| 1 | 30 | 18 | نعم | a ← 30 − 18 | 12 | 18 | لا |
| 2 | 12 | 18 | لا | b ← 18 − 12 | 12 | 6 | لا |
| 3 | 12 | 6 | نعم | a ← 12 − 6 | 6 | 6 | نعم |
| النتيجة | 6 | 6 | — | — | — | — | PGCD = 6 |
Algorithme CalculPGCD
Variables
a, b, temp : entier
Début
Lire(a)
Lire(b)
Tantque (b != 0) faire
temp <- b
b <- a % b
a <- temp
fintantque
ecrire("PGCD = ", a)
Fin