function reset(n) { workingNum = n; run = false; end = false; check = false; str = ''; } function initialTest(n) { for (i = 2; i < n; i++) { if (n % i === 0) {check = true; return;} if (n / i < i) return; } } function isPrime(n) { for (i = 2; i < n; i++) { if (n % i === 0) {run = false; return;} } currentPrimeNum = i; run = true; } function concat(sum, n) { if (sum === 1) str = str + '(' + n + ')'; else str = str + '(' + n + '**' + sum + ')'; } function calculate(n) { var sum = 0; var divide = true; while (divide === true) { if (workingNum % n === 0) {workingNum /= n; sum++; divide = true;} else divide = false; } if (sum >= 1) concat(sum, n); if (workingNum === 1) {end = true; return;} var final = true; var x = 2; while (final) { if (workingNum % x === 0) final = false; if (workingNum / x < x) {str = str + '(' + workingNum + ')'; end = true; return;} x++; } if (final === true) {str = str + '(' + workingNum + ')'; end = true;} } function main(n) { reset(n); initialTest(n); if (!check) return; for (num = 2; num < n; num++) { isPrime(num); if (run) calculate(currentPrimeNum); if (end) return; } } function primeFactors(n) { main(n); if (!check) {var prime = '(' + n + ')'; return prime;} return str; }