这是我一直在思考的一段时间的问题。查找从a到b不能被x整除的数字
什么是从a到b找到所有数字的最快方法,它们不能被x到y中的任何数字整除?
考虑一下:
我想找到所有没有被2整除至5 这个过程的数字从1到10会变得非常慢,如果我在那里用线性的方法; 像这样:
result = []
a = 1
b = 10
x = 2
y = 5
for i in range(a,b):
t = False
for j in range(x,y):
if i%j==0:
t = True
break
if t is False:
result.append(i)
return result
有谁知道用更少的计算时间比线性解决方案这样做的任何其他方法?
如果没有,任何人都可以看到这个威力如何更快地执行,因为我在这一点上的空白...
真诚, 约翰
[编辑]
数字的范围是0到> 1,e + 100
这对于a,b,x和y是正确的
你优化的大(B-A),大B,大(Y-X),大y或与小的数字称这是很多很多次?我怀疑答案会因这些问题而变化 – Patashu
这是问题的一部分: A,B,X,Y,渐渐变 – JohnWO
你不想写1e100而不是“1,E + 100”?如果是这样的话,那么很难找到一个非常快速的方法,因为这组数字不适合内存,或者甚至是硬盘(目前为止)。如果数量合理(比如约1e8,以便它们适合记忆),那么可以通过交易记忆来获得快速方法以获得速度。 – EOL