Скорочення дробів
a / b чисельник / знаменник
JavaScript
function reduce(numerator, denominator) { var a = numerator; var b = denominator; var c; while (b) { c = a % b; a = b; b = c; } return [numerator / a, denominator / a]; }
public class Program
{
public static void Main()
{
Calc.Reduce(2,4);
}
}
public static class Calc
{
public static int gcd(int answerNumerator, int answerDenominator)
{
int x = Math.Abs(answerNumerator);
int y = Math.Abs(answerDenominator);
int m;
if (x > y)
m = y;
else
m = x;
for (int i = m; i >= 1; i--)
{
if (x % i == 0 && y % i == 0)
{
return i;
}
}
return 1;
}
public static void Reduce(int answerNumerator, int answerDenominator)
{
WriteFraction(answerNumerator, answerDenominator);
try
{
int gcdNum = gcd(answerNumerator, answerDenominator);
if (gcdNum != 0)
{
answerNumerator = answerNumerator / gcdNum;
answerDenominator = answerDenominator / gcdNum;
}
if (answerDenominator < 0)
{
answerDenominator = answerDenominator * -1;
answerNumerator = answerNumerator * -1;
}
}
catch (Exception exp)
{
throw new InvalidOperationException("Cannot reduce Fraction: " + exp.Message);
}
WriteFraction(answerNumerator, answerDenominator);
}
public static void WriteFraction(int answerNumerator, int answerDenominator)
{
Console.WriteLine(string.Format(answerNumerator + "/" + answerDenominator));
}
}