randRange( 3, 15 ) randRange(2, 10) * FACTOR randRange(2, 10) * FACTOR getGCD( NUM, DENOM ) getPrimeFactorization(GCD) (function(){ var factorValue = 1; var factorDisplay = ""; var hint = "\\dfrac{" + NUM + "}{" + DENOM + "}"; $.each( GCD_FACTORS, function( index, value) { factorValue *= value; var dot = index === 0 ? "" : "\\cdot "; factorDisplay += dot + value; hint += "= \\dfrac{" + factorDisplay + "\\cdot" + NUM / factorValue + "}{" + factorDisplay + "\\cdot" + DENOM / factorValue + "}"; }); hint += "= \\dfrac{" + NUM / GCD + "}{" + DENOM / GCD + "}"; return hint; })()

Simplify to lowest terms.

\dfrac{NUM}{DENOM}

NUM / DENOM

There are several ways to tackle this problem.

What is the greatest common factor (GCF) of NUM and DENOM?

NUM = getPrimeFactorization( NUM ).join( "\\cdot" )
DENOM = getPrimeFactorization( DENOM ).join( "\\cdot" )

The only common factor of NUM and DENOM is GCD.

The common factors of NUM and DENOM are toSentenceTex(GCD_FACTORS).

So the greatest common factor is GCD_FACTORS.join("\\cdot") = GCD

\dfrac{NUM}{DENOM} = \dfrac{NUM / GCD \cdot GCD}{ DENOM / GCD\cdot GCD}

\hphantom{\dfrac{NUM}{DENOM}} = \dfrac{NUM / GCD}{DENOM / GCD} \cdot \dfrac{GCD}{GCD}

\hphantom{\dfrac{NUM}{DENOM}} = \dfrac{NUM / GCD}{DENOM / GCD} \cdot 1

\hphantom{\dfrac{NUM}{DENOM}} = \dfrac{NUM / GCD}{DENOM / GCD}

You can also solve this problem by repeatedly breaking the numerator and denominator into common factors.

For example:

HINT