📅  最后修改于: 2023-12-03 14:55:46.567000             🧑  作者: Mango
当涉及到素数测试时,Euler伪素数测试是一种流行的方法。在这个测试中,我们检查一个数是否为Euler伪素数。一个大于2的整数 $n$ 是Euler伪素数,如果:
$$a^{n-1} \equiv 1 \pmod n$$
其中 $a$ 是 $1$ 到 $n-1$ 之间的一个随机整数,并且 $a$ 与 $n$ 互质。
Python 实现该测试非常简单:
def is_euler_pseudoprime(n: int) -> bool:
for a in range(2, n):
if pow(a, n-1, n) != 1:
return False
if math.gcd(a, n) != 1:
return False
return True
上述代码中,我们使用了 算术运算符 pow()
来计算 $a^{n-1} \pmod n$。我们还使用了 gcd()
函数来计算 $a$ 和 $n$ 之间的最大公约数,以确保 $a$ 和 $n$ 互质。
我们可以通过下面几组测试用例来测试以上实现的效果:
>>> is_euler_pseudoprime(561)
True
>>> is_euler_pseudoprime(1105)
True
>>> is_euler_pseudoprime(1729)
True
>>> is_euler_pseudoprime(2465)
True
>>> is_euler_pseudoprime(2821)
True
>>> is_euler_pseudoprime(6601)
True
关于 Euler 伪素数测试的更多信息,可以参考维基百科的 Euler 伪素数 页面。