标签:using 判断 ace mes ram bool cti 表示 ==
#include<bits/stdc++.h>
using namespace std;
int prime[5800000],ans; bool vis[100000000];
int main()
{
int a;
cin>>a;
int cnt=0;
for(int i=2;i<=a;i++)
if(!vis[i])
prime[++cnt]=i; vis表示0为素数,1为合数
}
for(int j=1;j<=cnt&&i*prime[j]<=a;j++)
vis[i*prime[j]]=1; 此时 prime[j]为依次最小素数,prime[j] 一定是 i 的最小素数
if(i%prime[j]==0) 欧拉筛法的核心语句:判断去重,因为 prime[j]的倍数一定被标记过且为合数,所以当 i 为其倍数时直接break掉 ; 减少重复运算
break;
printf("%d\n",cnt);
欧拉线筛
原文地址:https://www.cnblogs.com/nlyzl/p/11258376.html