function CanonicForm($num) { $primes_all = array_reverse(primefactor($num)); $primes_distinct = array_unique($primes_all); foreach ($primes_distinct as $key => $prime) { $exponent = count(array_keys($primes_all, $prime)); $primes_list[$key] = $prime . '^{' . $exponent . '}'; } return $primes_list; }
function primefactor($num) { $sqrt = sqrt($num); for ($i = 2; $i <= $sqrt; $i++) { if ($num % $i == 0) { return array_merge(primefactor($num / $i), array($i)); } } return array($num); }