📅  最后修改于: 2023-12-03 14:57:31.236000             🧑  作者: Mango
对给定数组中的数字进行素数筛选,即找出其中的素数并输出。
素数,也叫质数,是指只能被 1 和本身整除的自然数。例如,2、3、5、7、11、13 等都是素数,而 4、6、8、9、10 等不是素数。
要找出给定的数字数组中的素数,我们采用素数筛法。素数筛法是指在一定范围内,不断排除已知的所有素数的倍数,直到不再存在后续的素数。具体的实现方式有很多,这里我们介绍较为简单的埃氏筛法。
埃氏筛法的基本思想是从第一个素数开始,不断地将其倍数标记成合数,直到遍历完给定范围内的所有数。具体步骤如下:
实现埃氏筛法的代码如下所示:
def find_primes(n: int) -> List[int]:
"""
埃氏筛法
"""
primes = [True] * (n + 1) # 初始化数组
primes[0], primes[1] = False, False
for i in range(2, int(n ** 0.5) + 1): # 遍历到 sqrt(n)
if primes[i]:
for j in range(i*i, n+1, i): # 将 i 的倍数标记为合数
primes[j] = False
return [i for i in range(n+1) if primes[i]] # 返回所有的素数
该代码采用 Python 语言实现,返回一个列表,其中存储的即为素数。
计算数组中的素数,可以采用素数筛法来实现。其中,埃氏筛法是较为简单易懂的一种实现方式。需要注意的是,对于大规模的数据筛选,可以采用更高效的算法实现。