<?php
$digits = array(9,8,7,6,5,4,3,2,1);
$primes = array(1,2,3,5,7,11);
//will return 1:1 for 5:5. The function does not try to simplify them further
function simplify(Int $num, Int $denom, Array $primes){
//going from high primes to low primes
foreach(array_reverse($primes) as $prime) {
if (($num % $prime == 0) && ($denom % $prime == 0)) {
if ($num % $denom == 0) {
return [intdiv($num,$denom)];
} elseif ($denom % $num == 0) {
return [1,intdiv($denom,$num)];
//return simplify($num,$denom,$primes);
}
return [$num / $prime,$denom / $prime];
}
}
return [$num,$denom];
}
function simplifyArrays(Array $arr1, Array $arr2, Array $primes) {
for($i=0;$i<count($arr1);$i++){
$num1 = $arr1[$i];
for($j=0;$j<count($arr2);$j++){
$num2 = $arr2[$j];
echo "simplify: $num1 / $num2 = " . implode("/",simplify($num1,$num2,$primes)) . "\n";
}
}
}
simplifyArrays($digits,$digits,$primes);
preferences:
28.45 ms | 402 KiB | 5 Q