Python编程算法【三十九】要发就发
【案例内容】
“1898——要发就发”。请将不超过1993的所有素数从小到大排成第一行,第二行上的每个数都等于它上面相邻两个素数之差。编程求出:第二行数中是否存在若干个连续的整数,它们的和恰好为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代码】



根据验证的结果可知,总共能找到三个素数段,也就是确实存在若干个连续的整数,它们的和恰好为1898,而且有三种这样的素数段。至此成功验证了题目的猜想。