# Greatest common divisor (GCD) with working

The one thing I hated about maths in school and university was the fact that I had to show my working. Of course I knew that it helped the marker see that you understood the problem, but I just found it incredibly tedious. Particularly when I knew the answer right after reading the question.

I recall back in university I was asked many times to find the greatest common divisor (GCD) of two integers using Euclid’s algorithm. This is basically the exact situation I described above, you can work out the greatest common divisor in your head fairly easily with a smallish number but to actually show your working can take a quite a bit of writing.

Find the greatest common divisor of 108 and 30 108 = 30 x 3 + 18 30 = 18 x 1 + 12 18 = 12 x 1 + 6 12 = 6 x 2 + 0 ^ gcd(108, 30) = 6

So after doing it a couple of times I went ahead and spent a few minutes writing a little program that solved the problem with working shown. I lost the original source but have reproduced it for a little fun. :)

## Code

```
public static int gcd(int a, int b) {
int dividend;
int divisor = (a > b ? a : b);
int quotient;
int remainder = (a < b ? a : b);
System.out.format("Find gcd(%d, %d)\n", a, b);
do {
dividend = divisor;
divisor = remainder;
quotient = dividend / divisor;
remainder = dividend % divisor;
System.out.format(
"%d = %d x %d + %d\n",
dividend, divisor, quotient, remainder);
} while (remainder != 0);
System.out.format(
"\ngcd(%d, %d) = %d\n\n",
a, b, divisor);
return divisor;
}
```