素数打表法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
memset
(f, 0,
sizeof
(f));
f[1]=1 ;
i=2;
while
(i<=500000)
{
for
(j=i*2; j<=1000000; j+=i )
{
f[j]=1;
}
i++;
while
(f[i]==1)
{
i++;
}
}
|
直接筛选法
1 bool isPrime(long long n) 2 { 3 if (n <= 3) 4 { 5 return n > 1; 6 } 7 else if (n % 2 == 0 || n % 3 == 0) 8 { 9 return false; 10 } 11 else 12 { 13 for (long long i = 5; i * i <= n; i += 6) 14 { 15 if (n % i == 0 || n % (i + 2) == 0) 16 { 17 return false; 18 } 19 } 20 return true; 21 } 22 }