public class test {
public static void main(String[] args) {
Scanner in = new Scanner(new InputStreamReader(System.in));
int a;
a = in.nextInt();
ola(a);
System.out.println(cnt);
}
static final int N = 10000005;
static int[] primes = new int[N];
static int[] st = new int[N];
static int cnt = 0;
public static void ola(int n){
for(int i = 2; i <= n; i++)
{
if(st[i] == 0) primes[cnt++] = i;
for(int j = 0; primes[j] <= n / i; j++)
{
st[primes[j]*i] = 1;
if(i % primes[j] == 0) break;
}
}
System.out.println();
}
//Simplified
for(int i = 2; i <= n; i++)
{
if(st[i] == 0)
{
for(int j = 2 * i; j <= n; j += i)
st[j] = 1; // j是i的一个倍数,j是合数,筛掉。
}
}
}
}
欧拉筛求素数(线性复杂度)
于 2023-03-27 21:08:50 首次发布