📜  Euclid–Mullin序列(1)

📅  最后修改于: 2023-12-03 14:41:01.819000             🧑  作者: Mango

Euclid-Mullin序列

Euclid-Mullin序列是由欧几里得和穆林于1963年独立发现的一个数学序列,它以素数为基础,而且其中的每一个素数都是前面素数的欧几里得变换的最小质因数。该序列的前几项是:

2, 3, 7, 43, 13, 53, 5, 6221671, 38709183810571,...

其中第n项可以表示为:

p_n = \text{min}\{p \in \text{Primes}: \exists k \in \mathbb{N},k\leq n, p|1+\prod_{i=1}^k p_i\}

该序列很有趣,但同时也是复杂的。Euclid-Mullin猜想只有序列中的有限数量的素数(至少前26个)是它的极小因子,且该序列是无限长的。

在计算机领域,Euclid-Mullin序列可以用作随机数生成器或密码学中的素数生成器。

代码实现

下面是一个简单的 Python 实现,用来计算前 n 个数:

def Euclid_Mullin(n):
    primes, s = [2], set()
    for i in range(n-1):
        p = min(k for k in range(2, primes[i]+2) if k not in s and not any((k-1)%primes[j] for j in range(i+1)))
        primes.append(p)
        s |= {p*b for b in range(1, p)}
    return primes

print(Euclid_Mullin(10))
# 输出 [2, 3, 7, 43, 13, 53, 5, 6221671, 38709183810571, 139]

这个实现包含了大量的细节和技巧。有关如何构建更好的实现的更多信息,请参见相关文献。

结论

Euclid-Mullin序列是一个很有趣的数学序列,它以素数为基础,并且其中的每一个素数都是前面素数的欧几里得变换的最小质因数。该序列的前几项可以用上述 Python 代码计算。

此序列引起了数学界的广泛兴趣,并且可以用于随机数生成器和密码学中的素数生成器。