seven / solution 7.6
<?php
simplify(5, -250000);
simplify(5, -250001);
simplify(6, -250001);
simplify(5, 250001);
simplify(10, 1);
simplify(10, 2048);
simplify(10, 0);
simplify(0, 100);
simplify(-2, 5000);
// takes $n for nth root and $i for integer
// $max = maximum multiplier for $n
// $v = test value for multiplier
// $s = simplified $i
// outputs in format of a b√c where b is nth root because of text limitations, omitting what's not relevant
function simplify(int $n, int $i)
{
print_r("simplifying " . $n . "√" . $i . ".\n");
if ($n < 2) {
print_r("sorry, can't simplify that.\n\n");
return;
}
if ($i === 0) {
print_r("0\n\n");
return;
}
if ($i === 1) {
print_r("1\n\n");
return;
}
$i < 0 ? ($imaginary = true && ($i *= -1)) : ($imaginary = false);
$max = ceil($i ** (1 / $n));
for ($v = $max; $v >= 1; $v--) {
if ($i % $v ** $n === 0) {
$s = $i / $v ** $n;
$imaginary && $n % 2 > 0 && print_r("-");
$v > 1 && print_r($v);
$imaginary && $n % 2 == 0 && print_r("i");
($v > 1 || $imaginary) && print_r(" ");
$s > 1 && print_r($n . "√" . $s);
print_r("\n\n");
return;
}
}
}