حل التمرين 20 الطريقة اﻷولى

كود الخوارزمية


  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
              
مثال: PGCD(48, 18) بالطرح المتكرر
الخطوة 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