在Python中查詢將N減少到1的最大操作次數
假設我們有兩個數字P和Q,它們構成一個數字N = (P!/Q!)。我們必須透過執行儘可能多的操作來將N減少到1。在每次操作中,當N可被X整除時,可以將N替換為N/X。我們將返回可能的最大操作次數。
因此,如果輸入類似於A = 7,B = 4,則輸出將為4,因為N為210,除數為2、3、5、7。
為了解決這個問題,我們將遵循以下步驟:
N := 1000005
factors := 一個大小為N的陣列,並填充0
從主方法中執行以下操作:
對於範圍從2到N的i,執行
如果factors[i]等於0,則
對於範圍從i到N的j,每次遞增i,執行
factors[j] := factors[j / i] + 1
對於範圍從1到N的i,執行
factors[i] := factors[i] + factors[i - 1];
返回factors[a] - factors[b]
示例
讓我們看看下面的實現,以便更好地理解:
N = 1000005 factors = [0] * N; def get_prime_facts() : for i in range(2, N) : if (factors[i] == 0) : for j in range(i, N, i) : factors[j] = factors[j // i] + 1 for i in range(1, N) : factors[i] += factors[i - 1]; get_prime_facts(); a = 7; b = 4; print(factors[a] - factors[b])
輸入
7,4
輸出
4
廣告