这个问题引用了Project Euler 问题 5,所以要小心剧透!问题 5:
2520 是可以除以 1 到 10 的每个数字而没有任何余数的最小数字。能被 1 到 20 的所有数整除的最小正数是多少?
我在 Ruby 中编写了以下代码作为问题 5 的解决方案。
num = 2520
until (1..20).all?{|x| num % x == 0}
num += 1
end
puts "#{num}"
但是,每当我运行脚本时,它都会挂起。请注意,我在基本案例 2520 上测试了相同的方法,范围为 1 到 10,并且效果很好。
为什么它适用于更简单的情况,但不适用于更高级的情况?我能做些什么来修复我所拥有的?