fork(1) download
  1. <?php
  2.  
  3. function getLevel($base, $root = 3.0) {
  4. $exact = pow($base, 1.0 / $root);
  5. $ceil = ceil($exact);
  6. $floor = floor($exact);
  7.  
  8. if (pow($exact, $root) == $base) { return $exact; }
  9. if (pow($ceil, $root) == $base) { return $ceil; }
  10. if (pow($floor, $root) == $base) { return $floor; }
  11.  
  12. // No integer root
  13. return FALSE;
  14. }
  15.  
  16. var_dump(getLevel(10648, 3)); // 22^3
  17. var_dump(getLevel(16807, 5)); // 7^5
  18.  
  19. var_dump(getLevel(1, 3)); // Should always return 1
  20. var_dump(getLevel(1, 99)); // Should always return 1
  21.  
  22. var_dump(getLevel(7)); // Has no integer 3rd root
  23.  
Success #stdin #stdout 0.01s 20568KB
stdin
Standard input is empty
stdout
float(22)
float(7)
float(1)
float(1)
bool(false)