给定数是否是任何其他自然数 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;
}