等差素数数列
1.问题描述:
类似7、37、67、97、107、137、167、197,这样由素数组成的数列叫做等差素数数列。
素数数列具有项数的限制,一般指素数数列的项数有多少个连续项,最多可以存在多少个连续项。
2.题目:
编程找出100以内的等差素数数列。
解题思路:
#1、筛法找到所有的素数
#2. 对于素数list内素有俩两组合,构造等差数列a0, a1项
#3. 计算出a2, 查表判断a2是否是素数,是素数则能构成素数等差序列, 计算a3…
n=int(input('请输入查找范围:'))
def primeNumber(n):
pt=[True]*n
s=[]
for p in range(2,n):
if not pt[p]:
continue
s.append(p)
for i in range(p*p,n,p):
pt[i]=False
return pt,s
pt,s=primeNumber(n)
for i in range(len(s)):
for j in range(i+1,len(s)):
a0,a1=s[i],s[j]
an = a1 + a1 - a0 #公差相等,前后项相加,等于中间项的2倍
k = []
while an < n and pt[an]: #判断an项是否为素数,如果是则添加到k,打印出来
k.append(an)
an += a1 - a0 #
if k:
print ([a0, a1] +k)