标签:euler break 筛法 span register reg void pre ++
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 }
标签:euler break 筛法 span register reg void pre ++
原文地址:https://www.cnblogs.com/kcn999/p/10015332.html