给定的数字是否是任何其他自然数php的幂


Whether given number is a power of any other natural number php?

我试图找到对于给定的正整数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;
}