Is there a JavaScript function that reduces a fraction Is there a JavaScript function that reduces a fraction javascript javascript

Is there a JavaScript function that reduces a fraction


// Reduce a fraction by finding the Greatest Common Divisor and dividing by it.function reduce(numerator,denominator){  var gcd = function gcd(a,b){    return b ? gcd(b, a%b) : a;  };  gcd = gcd(numerator,denominator);  return [numerator/gcd, denominator/gcd];}reduce(2,4);// [1,2]reduce(13427,3413358);// [463,117702]


No, but you can write one yourself fairly easily.Essentially you need to divide the top and bottom parts of the fraction by their 'Greatest Common Denominator'... Which you can calculate from Euclid's algorithm.

Read here for more info: http://www.jimloy.com/number/euclids.htm

edit:

code (because everyone seems to be doing it, this doesn't use recursion though)

var FractionReduce = (function(){    //Euclid's Algorithm    var getGCD = function(n, d){        var numerator = (n<d)?n:d;        var denominator = (n<d)?d:n;                var remainder = numerator;        var lastRemainder = numerator;        while (true){            lastRemainder = remainder;            remainder = denominator % numerator;            if (remainder === 0){                break;            }            denominator = numerator;            numerator = remainder;        }        if(lastRemainder){            return lastRemainder;        }    };    var reduce = function(n, d){        var gcd = getGCD(n, d);        return [n/gcd, d/gcd];    };    return {            getGCD:getGCD,            reduce:reduce           };}());alert(FractionReduce.reduce(3413358, 13427));


To reduce a fraction, divide the numerator and denominator by the Greatest Common Factor.Phrogz and David have already provided the source code..

However if you're searching for javascript libraries for handling fractions, then here are a few to choose from.

  1. Fraction.js
  2. Math.Rational
  3. Ratio.js
  4. Rational.js

Here's an example using Ratio.js.

var a = Ratio(2,4);a.toString() == "2/4";a.simplify().toString() == "1/2";    // reduce() returns a clone of the Ratio()a.toString() == "2/4"; // Ratio functions are non-destructive.