我试图找到对于给定的正整数Z,检查Z是否可以写成pQ,其中p和Q是大于1的正整数;如果Z可以写成PQ,则返回1
,否则返回0
我尝试了很多在线解决方案,
检查一个整数是否是另一个的整数幂
查找一个数字是否是2次方
但这不是我需要的,任何提示或提示?
这里有一个简单的方法-尝试每个组合:
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;
}