📅  最后修改于: 2023-12-03 15:25:45.908000             🧑  作者: Mango
本程序用于打印所有数量少于其的Prime Quadruplet。一个Prime Quadruplet是一组由四个质数组成的数字序列,且相邻的差都是三。
例如:{5, 11, 17, 23}就是一组Prime Quadruplet。
本程序使用了筛法和判断质数的方法。
首先使用筛法求出2 ~ MAX 这个区间的所有质数。然后,枚举每一个质数 p,并找到小于 p 的最大质数 q,计算差值 d = p - q 是否等于 6。
如果 d 等于 6,则继续找比 p 多 2 的质数 r,看其是否满足 r = q + 6 和 p + 6。如果是,则我们找到了一组Prime Quadruplet。
经过这样的处理后,我们会得到所有的Prime Quadruplet。
以下是 Python 3 的代码实现:
MAX = 1000000
def sieve_of_eratosthenes():
is_prime = [True] * (MAX + 1)
is_prime[0], is_prime[1] = False, False
for i in range(2, int(MAX ** 0.5) + 1):
if not is_prime[i]:
continue
for j in range(i * i, MAX + 1, i):
is_prime[j] = False
return [i for i in range(2, MAX + 1) if is_prime[i]]
def print_prime_quadruplets():
primes = sieve_of_eratosthenes()
for i, p in enumerate(primes):
if i < 3:
continue
q = primes[i - 1]
r = primes[i - 3] if i > 3 else 0
d1, d2 = p - q, q - r
if d1 == 6 and d2 == 6:
print(f"Prime Quadruplet: {r}, {q}, {p}, {p + 6}")
if __name__ == '__main__':
print_prime_quadruplets()
代码片段为Python 3,使用了两个函数:
sieve_of_eratosthenes()
用于求解区间 2 ~ MAX 内的所有质数;print_prime_quadruplets()
用于找到所有的Prime Quadruplet并打印。