埃式筛法、线性筛法 素数( 二 )


bool flag[maxx], flag_section[maxx];int primes(int a, int b){flag[1] = true;for(int i = 2; i * i < b; i ++){if(!flag[i]){//找到一个素数for(int j = 2 * i; j * j < b; j += i)//筛选[2, sqrt(b)) flag[j] = true;for(int j = max(2, (a + i - 1) / i) * i; j < b; j += i)//(a+i-1)/i得到最接近a的i的倍数 , 最低是i的2倍 , 然后筛选flag_section[j - a] = true;}}int cnt = 0;for(int i = 0; i < b - a; i ++)if(!flag_section[i])cnt ++;return cnt;}
质因数分解
基本定理:任何一个大于 1 的正整数都能唯一分解为有限个质数的乘积 , 可写作:
【埃式筛法、线性筛法素数】N = p 1 c 1 p 2 c 2 p 3 c 3 … p m c m N=p_{1}^{c_{1}}p_{2}^{c_{2}}p_{3}^{c_{3}}\ldots p_{m}^{c_{m}} N=p1c1??p2c2??p3c3??…pmcm??其中 ci 都是正整数 , pi 都是质数 , 且满足 p1