Дмитрий Asked:2020-04-12 20:10:31 +0000 UTC2020-04-12 20:10:31 +0000 UTC 2020-04-12 20:10:31 +0000 UTC 小于 X 且可被 Y 整除的最大自然数 772 例如:找出能被39整除的小于5000的最大自然数。 любой-язык 1 个回答 Voted Best Answer m0nte-cr1st0 2020-04-12T20:19:00Z2020-04-12T20:19:00Z 最佳解决方案 5000 // 39 * 39 #4992 解决方案比较 def test1(): num = max(i for i in reversed(range(5000)) if i % 39 == 0) def test2(): num = max(filter(lambda x: x % 39 == 0, reversed(range(5000)))) def test3(): for i in range(5000, 39, -1): if not i % 39: break def test4(): 5000 // 39 * 39 if __name__ == '__main__': import timeit setup="from __main__ import test1,test2,test3, test4" print('test1:', timeit.timeit('test1()', setup=setup,number=10000)) print('-' * 25) print('test2:', timeit.timeit('test2()', setup=setup,number=10000)) print('-' * 25) print('test3:', timeit.timeit('test3()', setup=setup,number=10000)) print('-' * 25) print('test4:', timeit.timeit('test4()', setup=setup,number=10000)) #test1: 3.1136840023100376 #------------------------- #test2: 6.391721844673157 #------------------------- #test3: 0.008747044950723648 #------------------------- #test4: 0.0008490197360515594 结论:您可以更快地解决 - 不使用循环,仅基于数学运算。
最佳解决方案
解决方案比较
结论:您可以更快地解决 - 不使用循环,仅基于数学运算。