| loop-invariants/1/div.cs - Division by repeated subtraction. | Lecture 13 - slide 32 : 32 Program 1  | 
using System;
class LoopInvariantDemo{
  static int Div(int x, int y){
    // require x >= 0 && y > 0;   
    int rest = x;
    int quotient = 0;
    
    while (rest >= y) {
      // invariant rest + quotient * y = x;   
      rest = rest - y;
      quotient = quotient + 1;
    }
    return quotient;
    // ensure  rest + quotient * y = x && rest < y && rest >= 0;   
  } 
  public static void Main(){
    Console.WriteLine("Div({0}, {1}) = {2}", 10, 2, Div(10, 2));
    Console.WriteLine("Div({0}, {1}) = {2}", 100, 25, Div(100, 25));
    Console.WriteLine("Div({0}, {1}) = {2}", 1234567, 89, Div(1234567, 89));
  }
}