這是我一直在思考的一段時間的問題。查找從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