Opgaver i denne lektion   Gå til annoteret slide, hvor denne opgave er tilknyttet -- Tastaturgenvej: 'u'   Alfabetisk indeks   Kursets hjemmeside   

Opgaveløsning:
En simplificeret udgave af Euclids algoritme


Den nye udgave virker. Her er programmet vi taler om:

#include <stdio.h>

int main(void) {
  int a, b, i, j, remainder;
 
  printf("Enter two non-negative integers: ");
  scanf("%d %d", &a, &b);

  i = a; j = b;  /* We don't know if i > j */  
  while (j > 0){
    remainder = i % j;
    i = j;
    j = remainder;
  }

  printf("GCD of %d and %d is %d\n\n", a, b, i);
  
  return 0;
}   

Hvis j > i lige før while-løkken, vil de tre sætninger i kroppen af løkken:

     remainder = i % j;
     i = j;
     j = remainder;

være ækvivalete med:

     remainder = i;
     i = j;
     j = remainder;

altså en ombytning af i og j. Undervejs i løkken vil i være større end (eller lig med) j.