python 等差素数数列

等差素数数列

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)
发布了46 篇原创文章 · 获赞 37 · 访问量 4548

猜你喜欢

转载自blog.csdn.net/weixin_42444693/article/details/103534737