Bases de la programmation (trace de pseudo-code)

Le programme suivant soustrait l'un de l'autre les deux entiers a et b jusqu'à ce qu'ils soient égaux. Quelle est la valeur de k après son exécution ?

integer: a ← 48, b ← 18, k ← 0
while (a ≠ b)
  if (a > b)
    a ← a − b
  else
    b ← b − a
  endif
  k ← k + 1
endwhile
  1. A3
  2. B4
  3. C6
Afficher la réponse et l'explication

Réponse : B. 4

C'est la forme par soustractions de l'algorithme d'Euclide : on soustrait la plus petite valeur de la plus grande jusqu'à ce que les deux soient égales. (a, b) évolue ainsi : (48, 18) → (30, 18) → (12, 18) → (12, 6) → (6, 6), soit quatre soustractions, donc k = 4. La valeur finale a = b = 6 est le plus grand commun diviseur. L'algorithme d'Euclide avec le reste (mod) ne demande que trois étapes : 48 mod 18 = 12, 18 mod 12 = 6, 12 mod 6 = 0.

S'entraîner sur ce thème Retour au thème

Autres questions sur Bases de la programmation (trace de pseudo-code)

  1. La fonction isLeap suivante renvoie true si l'année y est bissextile. and est évalué avant or. Pour quelle valeur de y isLeap(y) renvoie-t-elle true ?
  2. ÷ est la division ; quand le résultat est affecté à une variable entière (y compris un argument de fonction), la partie fractionnaire est supprimée. Lorsque la fonction pow suivante est appelée sous la forme pow(2, 10), combien de fois pow est-elle appelée, premier appel compris ?
  3. Quelle est la valeur de retour de la fonction s suivante appelée sous la forme s(7) ?
  4. Lorsque la procédure p suivante est appelée sous la forme p(3), quelle suite de valeurs est affichée ?
  5. Quelle est la valeur de retour de la fonction fib suivante appelée sous la forme fib(10) ?