做一下欧拉筛的笔记;
模板:
欧拉筛
#include<iostream>
using namespace std;
int p[1007],a[1007];//p是存素数的数组,a是标记合数和素数的数组
int main()
{
int n,k=0;
cin>>n;
for(int i=2;i<=n;i++)
{
if(a[i]==0)
{
k++;
p[k]=i;
}
for(int j=1;j<=k&&p[j]*i<=n;j++)
{
a[p[j]*i]=1;
if(i%p[j]==0){
break;
}
}
}
cout<<k;
return 0;
}
欧拉筛是在埃氏筛的基础上进行改进,埃氏筛是将每个当前数的倍数进行筛选,就会导致一个数被重复筛选,而欧拉筛就优化了埃氏筛,只用要被筛去的合数用它的最小质因子去筛一次.