给定数是否是任何其他自然数 php 的幂?
Whether given number is a power of any other natural number php?
我试图找到对于给定的正整数 Z,检查 Z 是否可以写成 PQ,其中 P 和 Q 是大于 1 的正整数。如果 Z 可以写成 PQ, return 1
, else return 0
我尝试了很多在线解决方案,
Check if one integer is an integer power of another
Finding if a number is a power of 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;
}
我试图找到对于给定的正整数 Z,检查 Z 是否可以写成 PQ,其中 P 和 Q 是大于 1 的正整数。如果 Z 可以写成 PQ, return 1
, else return 0
我尝试了很多在线解决方案,
Check if one integer is an integer power of another
Finding if a number is a power of 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;
}