埃拉托色尼筛选法的介绍
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了埃拉托色尼筛选法的介绍相关的知识,希望对你有一定的参考价值。
参考技术A埃拉托色尼选筛法(the Sieve of Eratosthenes)简称埃氏筛法,是古希腊数学家埃拉托色尼(Eratosthenes 274B.C.~194B.C.)提出的一种筛选法。 是针对自然数列中的自然数而实施的,用于求一定范围内的质数,它的容斥原理之完备性条件是p=H~。
埃拉托色尼质数筛法
所谓质数的筛法,就是在一个给定的区间中判断哪些数是质数,哪些数不是质数
这是OI常用质数筛选方法的第一种——Eratosthnes
用到的性质是 质数的倍数一定不是质数 所以我们就可以先定义一个数组,起初
认为这个数组中所有的全部都是质数,然后通过循环一次一次的把质数的倍数置
成true,意为它是合数。
由于这个算法不能确定唯一产生合数的方式,比如20,这个合数会被质数2筛选
一次,也会被质数5筛选一次,所以这个算法不是最快的质数筛法,它的复杂度
是O(nlognlogn).
注意:1既不是质数也不是合数.
Code:
#include<cstdio> #include<iostream> #include<cstring> using namespace std; int isprime[2333]; void prime(int n) { memset(isprime,0,sizeof(isprime)); for(int i=2;i<=n;i++) { if(isprime[i]) continue; printf("%d ",i); for(int j=2;i*j<=n;j++) isprime[i*j]=true; } return; } int main() { int n; cin>>n; prime(n); return 0; }
以上是关于埃拉托色尼筛选法的介绍的主要内容,如果未能解决你的问题,请参考以下文章