我见过许多关于这个问题的问题,但似乎没有人回答我的具体问题。
首先,最基本的问题是要找出可以被数字1到20整除的最小数。
我已经编写了一些代码来解决这个问题,但是运行时对我来说太长了。我想我对数学还不太了解,这才是真正的优化我的解决方案。我知道以1的增量迭代并不是最快的,但我想不出任何其他方法。
def smallest_divisible(range_max):
divisors = list(range(2,range_max+1,1)) #We ignore 1 because 1 is
#divisible by everything
x = 1
while True:
x += 1
check = divisible(x, divisors)
if check: return x
def divisible(n, lst):
#Pass a number to compare to a list to see if the number
#is divisible by all elements in list
return all(map(lambda y: n%y == 0, lst))发布于 2019-08-14 07:05:36
divisors = list(range(2,range\_max+1,1)) #We ignore 1 because 1 is #divisible by everything
这一评论是错误的。0可以除以一切。1可分为一切。
x = 1 while True: x += 1 check = divisible(x, divisors) if check: return x
我认为使用itertools.count(2)会更像Pythonic。事实上,我倾向于单线
return next(iter(x for x in count(2) if divisible(x, divisors)))def可除(n,lst):#传递一个数字以与列表进行比较,以查看该数字#是否可被列表中的所有元素整除,返回all(map(lambda y: n%y == 0,lst))
同样,我认为更多的Pythonic方法是一种理解:
return all(n%y == 0 for y in lst)我会把lst改名为divisors。价值的意义比它的类型更重要。
我见过许多关于这个问题的问题,但似乎没有人回答我的具体问题。。我知道以1的增量迭代并不是最快的,但我想不出任何其他方法。
我也看到了关于这个问题的多个问题,我记得,他们都回答了这个问题。因此,与其重复所有这些问题,我要提供的是,如果你列出五个问题,没有,我会列出五个这样做。
https://codereview.stackexchange.com/questions/226072
复制相似问题