使用PHP反向析因循环

时间:2014-01-20 01:13:41

标签: php loops for-loop factorial inverse

我感到无聊并创建了这个脚本,其唯一目的就是练习循环。我正在尝试使用因子数,例如479001600,它是12的阶乘!我正在把它喂给循环,找出479001600是一个阶乘的数字。使用479001600/2 -> 239500800/3 -> 79833600/4 ...-> previous_int/n+1技术,我提出了以下代码,只能使用12个代码!但是失败了13!向前:

<?php

    function inv($int){

        $j=2;

        for($i=0;$i<$j;$i++){

            $prod = $int/$j;

            if($prod !== 1){
                $int = $prod;
                echo $prod. "<br>";
                $j++;
            } elseif($prod == 1) {
                return $j;
            }

        }

    }

    echo inv(6227020800);  // 13!


?>

When I try to compute the 6227020800 to 13! I get the following output:

<?php

    function inv($int){

        $j=2;

        for($i=0;$i<$j;$i++){

            $prod = $int/$j;

            if($prod !== 1){
                $int = $prod;
                echo $prod. "<br>";
                $j++;
            } elseif($prod == 1) {
                return $j;
            }

        }

    }

    echo inv(6227020800);  // 13!


?>

即使它通过循环除法得到整数1,它也会忽略if语句。有什么我做错了吗?任何帮助将不胜感激,我也想避免使用gmp_函数。

1 个答案:

答案 0 :(得分:1)

这是因为1和0.071428571428571的类型不同。

您的比较运算符!==检查值是否相同,因为它们的类型不同,检查失败。要亲眼看看,请试试这个:

  echo gettype(1);
  echo gettype(0.12);