Вы в основном пытаетесь получить наибольший общий знаменатель - GCD для двух чисел, а затем делите их на это и таким образом получаете свою строку?
Т.е.: 800: 600; наибольший общий знаменатель = 200, то есть 4: 3.
Это позволит обрабатывать все целые числа. Извините, что не отправил код, но я думаю, что с этого момента все должно быть достаточно просто.
public int GCD(int a, int b)
{
while (a != 0 && b != 0)
{
if (a > b)
a %= b;
else
b %= a;
}
if (a == 0)
return b;
else
return a;
}
// Using Konrad's code:
var gcd = GCD(A, B);
return string.Format("{0}:{1}", A / gcd, B / gcd)