JSFiddle - React, Tailwind, and code Playground

by krustnic

JavaScript

function findPrimes(n) {
  const primes = [];
  for(let i=2; i<=n; i++) {
    let isPrime = true
    for(let j=2; j<=Math.sqrt(n); j++) {
      if (i !== j && i % j === 0) {
        isPrime = false
        break
      }
    }
    
    if (isPrime) {
      primes.push(i)
    }
  }
  
  return primes
}

function fac(n) {
	return (n != 1) ? n * fac(n - 1) : 1;
}

function getDivisionNumber(n, d) {
	let count = 0
	while(n % d === 0) {
  	n = n / d
    count += 1
  }
  
  return count
}

function decomp(n) {
	const f = fac(n)
  const primes = findPrimes(n)
  const items = []
     
  console.log(f)
  console.log(primes)
     
  for(const prime of primes) {
  	console.log(f % prime)
    if (f % prime === 0) {    	
      const d = getDivisionNumber(f, prime)
      items.push(prime + (d === 1 ? '' : '^' + d))
    }
  }
  
  return items.join(' * ')
}

console.log(decomp(25))