埃拉托斯特尼筛法求质数¶
说明
本文档内容由 AI 生成
使用筛法求出 1 到 N 以内的所有质数,最常用的算法是埃拉托斯特尼筛法(Sieve of Eratosthenes)。这个算法的效率相对较高,特别是对于较大的 N 值。以下是该算法的基本步骤:
- 创建一个布尔数组
isPrime
,大小为 N + 1,并初始化所有元素为true
。数组下标代表数字,而对应的值表示这个数字是否为质数。初始时假设所有数字都是质数 - 将
isPrime[0]
和isPrime[1]
设为false
,因为 0 和 1 不是质数 - 从 2 开始遍历到 N:
- 如果当前数字 i 被视为质数(即
isPrime[i] == true
),则将 i 的所有倍数标记为非质数(即设置对应位置的值为false
)。注意,这里的倍数从i*i
开始,因为小于i*i
的倍数已经被之前的质数标记过了
- 如果当前数字 i 被视为质数(即
- 最后,遍历整个
isPrime
数组,收集所有值为true
的下标,这些下标就是 1 到 N 范围内的所有质数
以下是一个简单的 C++ 代码实现示例:
这段代码首先定义了一个函数 SieveOfEratosthenes
来计算并打印从 1 到指定数值 N 之间的所有质数。通过调整变量 N 的值,你可以改变搜索质数的范围。上述示例中,N 被设定为 100,但是你可以根据需要更改这个值
评论区
欢迎在评论区指出文档错误,为文档提供宝贵意见,或写下你的疑问