还有另一个最近的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; };
Chris Jester.. 6
收集1到20之间所有数字的素数因子.计算每个素数因子的最大指数,我们有16 = 2**4
,9 = 3**2
以及5,7,11,13,17,19(每个只出现一次).将该批次乘以,您就得到了答案.
收集1到20之间所有数字的素数因子.计算每个素数因子的最大指数,我们有16 = 2**4
,9 = 3**2
以及5,7,11,13,17,19(每个只出现一次).将该批次乘以,您就得到了答案.