Python編程算法【三十九】要發(fā)就發(fā)
【案例內容】
“1898——要發(fā)就發(fā)”。請將不超過1993的所有素數從小到大排成第一行,第二行上的每個數都等于它上面相鄰兩個素數之差。編程求出:第二行數中是否存在若干個連續(xù)的整數,它們的和恰好為1898?假如存在的話,又有幾種這樣的情況?兩行數據分別如下:
第一行:2,3,5,7,11,13,17…...1979,1987,1993
第二行:1,2,2,4,2,4…...8,6
【解題思路】
本題的解題思路:可以用4個函數分別解決相應的操作任務。
1. 判斷一個數是否為素數;
2. 找出1993內的素數,并存入列表
3. 計算相鄰兩素數之差,也存入列表;
4. 用遞歸函數計算第3步的列表中,是否存在在某一段的素數相加,其和會等于1898,如果有就將這段素數作為列表存入到一個新的列表中。
最后,做個驗證,把新列表中的各個素數段打印輸出,并求和,看看是否等于1898。
【Python代碼】



根據驗證的結果可知,總共能找到三個素數段,也就是確實存在若干個連續(xù)的整數,它們的和恰好為1898,而且有三種這樣的素數段。至此成功驗證了題目的猜想。