這是一個歐拉項目挑戰,我試圖找到可以被1到20的所有數字均勻分割的最小正數?找到可以被1到20的所有數字均勻分割的最小正數?
我想出來的邏輯似乎運行得非常慢。它已經跑了最後4分鐘,仍然沒有找到數字。我試圖弄清楚a)這個邏輯是否正確? b)爲什麼這麼長時間?和c)有人可以給我一個更有效的替代邏輯的提示。
# 2520 is the smallest number that can be divided by each of the numbers from 1 to 10 without any remainder.
# What is the smallest positive number that is evenly divisible by all of the numbers from 1 to 20?
smallest_num = 2520
while smallest_num >= 2520:
divisor = 2
while smallest_num % divisor == 0 and divisor < 21:
print("Smalles num = {} and Divisor = {}").format(smallest_num, divisor)
divisor += 1
smallest_num += 1
print("Smallest number is: {}").format(smallest_num)
這是仍在處理,到目前爲止,我的終端看起來像這樣
此代碼將永久運行。 – ForceBru
您可以優化它,以便它不檢查1到20之間的每個數字。例如,通過檢查20,您還檢查了1,2,4,5和10. –
沒有理由爲什麼'while smallest_num> = 2520:'會永遠停止,所以不,你的邏輯是不正確的。另外你得到2520的原因是你可以首先在小問題上測試你的邏輯。嘗試編寫一個不包含2520的程序,但在考慮從1到10的數字時產生2520作爲輸出。 –