大约公元前250年,古希腊的数学家厄拉多塞(Eratosthenes)提出了一个造出不超过N的素数表的方法,后来人们把它称为厄拉多塞筛法。
具体步骤可表示为:
<1> 挖去1;
<2> 找到此时表头数p,挖去kp(k = 2,3,4,,,,,,),直到kp > N
<3>重复执行(2),直到p*p > N。
<4> 纸上剩下的数就是素数。
- bool prime[maxn];
- void is_prime()
- {
- prime[0] = false;
- prime[1] = false;
- for(int i = 2 ; i * i < maxn ; i++ )
- {
- if(prime[i])
- {
- int j = 2 * i;
- while(j < maxn)
- {
- prime[j] = false ;
- j += i;
- }
- }
- }
- }