还有另一个最近的Project Euler问题,但我认为这有点具体(我只对基于PHP的解决方案感兴趣)所以我还是要问.
问题#5的任务是:"从1到20的所有数字均可被整除的最小数字是多少?"
现在,我已经解决了两次.曾经非常低效,而且效率更高,但我仍然远离一个特别复杂的答案(我在数学上并不是特别坚固,因此我的蛮力解决方案).我可以看到几个方面我可以改进这一点,但我想知道你们中是否有人能够证明这个问题更有效的解决方案.
*扰流板:这是我不太理想(运行7秒)但仍然可以容忍的解决方案(不知道如何处理双$ ...只是假装你只看到1 ......
function euler5(){
$x = 20;
for ($y = 1; $y < 20; $y++) {
if (!($x%$y)) {
} else {
$x+=20;
$y = 1;
}
}echo $x;
};
Run Code Online (Sandbox Code Playgroud)
收集1到20之间所有数字的素数因子.计算每个素数因子的最大指数,我们有16 = 2**4,9 = 3**2以及5,7,11,13,17,19(每个只出现一次).将该批次乘以,您就得到了答案.
| 归档时间: |
|
| 查看次数: |
1519 次 |
| 最近记录: |