标签:continue ace 就是 产生 最快 size 筛法 ems main
所谓质数的筛法,就是在一个给定的区间中判断哪些数是质数,哪些数不是质数
这是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; }
标签:continue ace 就是 产生 最快 size 筛法 ems main
原文地址:https://www.cnblogs.com/Hoyoak/p/10459030.html