min_25 筛略解

min_25 筛因其发明者为 min_25 而得名。该算法的思想来源于埃氏筛。

其可以在低于线性的时间复杂度下对于一类积性函数 f f f 解决:

  • ∑ i = 1 n [ i  为质数 ] f ( i ) \sum\limits_{i=1}^n[i\text{ 为质数}]f(i) i=1n[i 为质数]f(i)
  • ∑ i = 1 n f ( i ) \sum\limits_{i=1}^nf(i) i=1nf(i)(即 f f f 的前缀和)。

记号

  • P P P 为质数集合;
  • p i p_i pi 为第 i i i 个质数(特别地, p 0 = 1 p_0=1 p0=1);
  • min ⁡ ( x ) \operatorname{min}(x) min(x) x x x 的最小质因子;
  • f ( x ) f(x) f(x) 为希望求出前缀和的积性函数;
  • f ′ ( x ) f'(x) f(x) f ′ ( x ) = f ( x ) ( x ∈ P ) f'(x)=f(x)(x\in P) f(x)=f(x)(xP) (即与 f f f 在质数处值相等)的一个完全积性函数。

筛质数的 f f f 的前缀和

g ( n ) = ∑ i = 1 n [ i ∈ P ] f ( i ) = ∑ i = 1 n [ i ∈ P ] f ′ ( i ) g(n)=\sum\limits_{i=1}^n[i\in P]f(i)=\sum\limits_{i=1}^n[i\in P]f'(i) g(n)=i=1n[iP]f(i)=i=1n[iP]f(i)

先考虑我们是如何用最原始的方法筛出所有质数的:由小到大枚举 p i p_i pi,将所有满足 p i ∣ x ( x > p i ) p_i|x(x>p_i) pix(x>pi) x x x 标记为合数。每一轮新被筛掉的数都满足 x ≠ p i  and  min ⁡ ( x ) = p i x\not=p_i\ \text{and}\ \min(x)=p_i x=pi and min(x)=pi

故记 g ( n , i ) g(n,i) g(n,i) 为第 i i i 轮筛完之后剩下的数的 f f f 的前缀和,即: g ( n , i ) = ∑ j = 1 n [ j ∈ P  or  min ⁡ ( j ) > p i ] f ( i ) g(n,i)=\sum\limits_{j=1}^n[j\in P\ \text{or}\ \min(j)>p_i]f(i) g(n,i)=j=1n[jP or min(j)>pi]f(i)

k k k 满足 p k 2 ≤ n < p k + 1 2 p_k^2\leq n< p_{k+1}^2 pk2n<pk+12,显然 k k k 轮筛完后只剩质数,即 g ( n ) = g ( n , k ) g(n)=g(n,k)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值