给定的数字是否是任何其他自然数字php的力量?

时间:2015-10-26 20:18:02

标签: php pow

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

但这不是我需要的,任何提示或任何提示?

1 个答案:

答案 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;
}