模板欧拉筛法(线性筛法)
Posted kcn999
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了模板欧拉筛法(线性筛法)相关的知识,希望对你有一定的参考价值。
1 int n; 2 int p[MAX_N], cnt; 3 bool b[MAX_N]; 4 5 void Euler() 6 { 7 b[0] = b[1] = 1; 8 for(register int i = 2; i <= n; ++i) 9 { 10 if(!b[i]) p[cnt++] = i; 11 for(register int j = 0; i * p[j] <= n; ++j) 12 // 不需要判断j < cnt, 因为中途定然会break出去 13 { 14 b[i * p[j]] = 1; 15 if(!(i % p[j])) break; 16 // 当出现这种情况时, i * p[j + k(k > 0, j + k < cnt)]的情况一定会被后面给筛掉 17 } 18 } 19 return; 20 }
以上是关于模板欧拉筛法(线性筛法)的主要内容,如果未能解决你的问题,请参考以下文章