我试图找到给定的正整数Z,检查Z是否可写为P Q ,其中P和Q是大于1的正整数。如果Z可写为P < sup> Q ,返回1
,否则返回0
我尝试了很多在线解决方案,
Check if one integer is an integer power of another
Finding if a number is a power of 2
但这不是我需要的,任何提示或任何提示?
答案 0 :(得分:1)
这是天真的方法 - 尝试每一个组合:
function check($z) {
for($p = 2; $p < sqrt($z); $p++) {
if($z % $p > 0) {
continue;
}
$q = $p;
for($i = 1; $q < $z; $i++) {
$q *= $p;
}
if($q == $z) {
//print "$z = $p^$i";
return 1;
}
}
return 0;
}
同样,使用php内置的log
函数。但它可能不那么准确(如果存在舍入误差,可能会出现误报)。
function check($z) {
for($p = 2; $p < sqrt($z); $p++) {
$q = log($z,$p);
if($q == round($q)) {
return 1;
}
}
return 0;
}