埃拉托斯特尼筛法(埃氏筛)完整解析
一、算法用途快速找出2 ~ n之间的所有素数。暴力判断每个数:O(nn)埃氏筛:O(nloglogn),接近线性,极快。二、核心思想先假设所有数都是素数。从最小素数 2 开始,把它的所有倍数标记为合数。取下一个没被标记的数(一定是素数),继续标记它的倍数。最后没被标记的,就是素数。三、完整算法步骤以筛出 2~n 内素数为例:初始化建立数组is_prime[],长度 n+1,全部设为true。is_prime[0] = is_prime[1] = false(0、1 不是素数)。遍历筛选从 i = 2 开始,只遍历到 √n:如果is_prime[i] == true,说明 i 是素数。把i², i²+i, i²+2i … ≤n全部标记为false。收集结果遍历数组,所有is_prime[i] == true的 i 都是素数。四、关键问题:为什么只需要遍历到 √n?
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2469968.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!