Use TryParse()
for retrieving integer input from the console. We don't want exceptions on user input.
You can change your GetGCD()
method to be much more intuitive and minimal using a ternary operator and recursion. I recommend also documenting what it's doing for readability purposes:
static int GetGCD(int x, int y)
{
// if y is equal to 0, return x.
// if y is not equal to 0, recursive call with x as y and y as the remainder.
return y == 0 ? x : GetGCD(y, x % y);
}
Modular arithmetic should be positive. To ensure this, we use the absolute value of the input (Euclidean division). Here's how I would implement it:
static void Main()
{
int x, y;
// Get x. Ensure it's an integer.
Console.WriteLine("Input first number: ");
while(!Int32.TryParse(Console.ReadLine(), out x));
// Get y. Ensure it's an integer.
Console.WriteLine("Input second number: ");
while(!Int32.TryParse(Console.ReadLine(), out y));
// Ensure the values being used are positive.
Console.WriteLine(GetGCD(Math.Abs(x), Math.Abs(y)));
Console.ReadKey();
}
The resulting console output:
Input first number: a b c 585 Input second number: d 442 13