【发布时间】:2014-03-08 05:36:39
【问题描述】:
我试图找到能被 1 到 20 的所有数字整除的最小正数,代码如下:
$num = 2520;
$x = 1;
while($x < 21){
if($num % $x == 0){
$x++;
}else{
$num += 20;
$x = 1;
}
}
echo $num;
它会在不到 1 分钟的时间内给出正确的输出。这个执行时间在专业领域很糟糕吗?有什么办法可以优化吗?
附:我从 2520 开始,因为它是可以除以 1 到 10 的每个数字而没有任何余数的最小数字。
【问题讨论】:
-
你不需要这个程序,它是 2^4*3^2*5*7*11*13*17*19。它是在不超过 20 的情况下将所有素数提高到尽可能大的幂的乘积。