繁体   English   中英

PHP的逆阶乘循环

[英]Inverse factorial loop with PHP

我很无聊,并且仅出于练习循环的目的而创建了此脚本。 我正在尝试使用阶乘数,例如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! ?> When I try to compute the 6227020800 to 13! I get the following output:

  3113510400 1037836800 259459200 51891840 8648640 1235520 154440 17160 1716 156 13 1 0.071428571428571 0.0047619047619048 0.00029761904761905 1.750700280112E-5 9.7261126672891E-7 5.1190066669943E-8 2.5595033334971E-9 1.2188111111891E-10 ...etc 

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

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

您的比较运算符!== ,检查值是否相同,并且由于它们的类型不同,因此检查失败。 要亲自查看,请尝试以下操作:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM