线性筛2
1.筛约数个数
根据唯一分解定理
(n = p_1^{k_1}p_2^{k_2}...p_q^{k_q})
任意质因子的任意次幂都可以随意组合, 所以根据乘法原理
(n)的约数个数为 ((1+k_1)*(1+k_2)*(1+k_3)*...(1+k_q))
so, 可以根据这个线性筛约数个数
首先设 (num(i)) 为(i) 的 (k_1) (也就是最小质因数的指数) (d(i)) 为 (i) 的约数个数
然后根据线性筛那套理论 分三种情况
- (large i是质数)
很显然 $num(i) =2 $ (d(i) = 2)
- (i mod prime[j]=0)
说明(i) 中有这个质因数,且是(i) 的最小质因数
则 (d(i*prime[j])=(1+k_1+1)*(1+k_2)*(1+k_3)*...(1+k_q))
(=d(i)/num(i) * (num(i) +1))
(num(i*prime[j])=num(i)+1)
-
(i mod prime[j]!=0)
说明(i) 中没有这个质因数,且(prime[j]) 为(i*prime[j]) 的最小质因数
则(d(i*prime[j])=(1+k_1)*(1+k_2)*(1+k_3)*...(1+k_q)*(1+k_{q+1}))
(=d(i)*(1+k_{q+1}))
(=d(i)*2)
(num(i*prime[j])=2)
这里由于(prime[j]) 是第一次出现 所以是2