素数是指只能被1和它自己整除的自然数,且1不是素数。求素数的方法有多种,下面是一些常见的方法:
试除法
遍历从2到`n-1`的所有数,如果`n`不能被这些数整除,则`n`是素数。
时间复杂度为O(n)。
筛选法 (如埃氏筛法):初始化一个布尔数组`isprime`,表示每个数是否为素数。
从2开始,将所有2的倍数标记为非素数,然后找到下一个未被标记的数(即素数),将其倍数标记为非素数。
重复上述过程,直到遍历完所有小于等于`n`的数。
时间复杂度为O(n log log n)。

线性筛法
(如欧拉筛法):

初始化一个布尔数组`vis`,表示每个数是否被访问过。
从2开始,将所有未被访问的数(即素数)添加到结果列表中,并将其倍数标记为已访问。
重复上述过程,直到遍历完所有小于等于`n`的数。
时间复杂度为O(n)。
其他算法
例如,可以使用更高效的算法如米勒-拉宾素性测试来判断大数的素性,时间复杂度可以降低到多项式时间。
使用这些方法,可以高效地找出一定范围内的所有素数。需要注意的是,对于非常大的数,可能需要使用更高级的算法和计算工具来处理