首页 > 其他分享 >min_25筛法学习

min_25筛法学习

时间:2024-11-11 20:46:04浏览次数:1  
标签:25 le 筛法 min ll 质数 right sum left

min_25 筛学习

算法

min_25 筛是解决如下问题的:

设 \(f\) 为一个积性的数论函数,问求 \(\sum_{i=1}^n f(i)\) 。其中 \(f\) 满足若 \(i\) 为质数那么 \(f(i^k)\) 可以快速计算。

min_25 筛算法可以在 \(O\left(\frac{n^{\frac34}}{\log n}\right)\) (通常情况下)的时间复杂度内解决上述问题。

下面令 \(P\) 为质数集合。

我们记录 \(g\) 也是一个积性函数,且若 \(i\) 是质数,那么 \(f(i)=g(i)\) ,且 \(g(i)\) 需要满足如下两个性质:

  1. \(s(i)=\sum_{1\le j\le i}g(p_i)\) 可以快速计算。
  2. 若已知 \(\sum_{i\in S}g(i)\) ,那么对质数 \(j\),\(T(\sum_{i\in S}g(i),j)=\sum_{i\in S}g(i\times j)\) 可以快速计算。

由于下式中在 \(2\) 到 \(n\) 中的合数的最小质因子一定 \(\le \sqrt n\),于是设 \(p\) 是一个所有 \(\le \sqrt n\) 的质数的序列,长度为 \(m\) 。

令 \(G(i,j)\) 表示 \(2\) 到 \(i\) 中所有质数和所有最小质因子 \(>p_j\) 的合数的 \(g\)​ 的函数值的和。

令 \(s(i)=\sum_{1\le j\le i}g(p_i)\)。

边界条件为 \(G(i,0)=\sum_{k=2}^i g(i)\)。

对于 \(i>p_j^2\) 转移方程为 \(G(i,j)=G(i,j-1)-T\left(G\left(\left\lfloor\frac i{p_j}\right\rfloor,j-1\right),p_j\right)+s(j-1)\)。否则 \(G(i,j)=G(i,j-1)\)。

所有质数的 \(f\) 的和就是 \(G(n,m)\),这里可以滚动数组优化。 \(i\) 的取值一定是 \(\left\lfloor\frac nd\right\rfloor\) 种类数量为是 \(O(\sqrt n)\) 的。可以 \(j\) 从小到大滚动数组。

令 \(F(i,j)\) 表示 \(2\) 到 \(i\) 中所有质数和所有最小质因子 \(>p_j\) 的合数的 \(f\)​ 的函数值的和。

初始时 \(F(n,m)=G(n,m)\)。

对于 \(i\le p_j^2\) 枚举 \(e\) 满足 \(p_j^e\le i\),那么转移方程为 \(F(i,j)=G(i,m)-s(j)+\sum_{j<k\le m\wedge p_k^{e+1}\le i}f(p_k^e)G\left(\left\lfloor\frac i{p_k^e}\right\rfloor,k\right)+f(p_k^{e+1})\)。

同 \(G\), \(i\) 的取值一定是 \(\left\lfloor\frac nd\right\rfloor\) 种类数量为是 \(O(\sqrt n)\) 的。可以记忆化搜索。

时间复杂度:

不会证明,但是根据论文所说,在 \(n\le 10^{13}\) 时时间复杂度 \(O\left(\frac{n^{3/4}}{\log n}\right)\),在 \(n\) 足够大时,时间复杂度是 \(O(n^{1-\epsilon})\),其中 \(\epsilon\) 为无穷小量。空间复杂度为 \(O(\sqrt n)\)。

例题

求 \(\sum_{i=1}^n\frac1{d(i)}\bmod p\) 。

题解

令 \(f(i)=\frac1{d(i)}\),构造 \(g(i)=\frac12\) ,那么 \(s(i)=\frac i2\),\(T(x,j)=x\),\(f(p^k)=\frac1{k+1}\),直接运用上述方法计算即可。

代码

#include<cstdio>
#include<algorithm>
#include<cmath>
typedef long long ll;
typedef __int128_t lll;
const ll N=2000005;
ll n,p,prime[N],inv[N],cnt,fs[N],fb[N],x[N],m;
bool vis[N];
inline void init(ll n){
    cnt=0;
    for(ll i=2;i*i<=n;i++){
        if(!vis[i])prime[++cnt]=i;
        for(ll j=1;j<=cnt&&i*i*prime[j]*prime[j]<=n;j++){
            vis[i*prime[j]]=1;
            if(i%prime[j]==0)break;
        }
    }
    prime[cnt+1]=N;
}
inline ll&f(ll x){
    return lll(x)*x<=n?fs[x]:fb[n/x];
}
inline ll fix(ll x){
    return(x%p+p)%p;
}
inline ll s(ll x){
    return fix(x*inv[2]);
}
inline void prework(){
    init(n);
    for(ll l=1,r;l<=n;l=r+1)r=n/(n/l),x[++m]=n/l,f(x[m])=fix((x[m]-1)*inv[2]);
    for(ll i=1;i<=cnt;i++)for(ll j=1;x[j]>=prime[i]*prime[i];j++){
        f(x[j])=fix(f(x[j])-f(x[j]/prime[i])+s(i-1));
    }
}
ll F(ll n,ll i){
    if(i<cnt&&prime[i+1]>n)return 0;
    ll res=fix(f(n)-s(i));
    for(ll j=i+1;prime[j]*prime[j]<=n;j++){
        for(ll k=1,x=prime[j];x*prime[j]<=n;k++,x*=prime[j]){
            res=fix(res+F(n/x,j)*inv[k+1]+inv[k+2]);
        }
    }
    return res;
}
int main(){
    scanf("%lld%lld",&n,&p),inv[1]=1;
    for(ll i=2;i<=40;i++)inv[i]=inv[p%i]*(p-p/i)%p;
    prework(),printf("%lld\n",fix(F(n,0)+1));
    return fflush(stdout),fclose(stdin),fclose(stdout),0;
}

标签:25,le,筛法,min,ll,质数,right,sum,left
From: https://www.cnblogs.com/junjunccc/p/18540553

相关文章

  • Decision Science Programming
    DecisionScience:ProgrammingAssignmentHaideCollege,AutumnSemester2024Duedates:Milestone(quiz):7November2024,23:59.[5%coursemark]Submission(code):14November2024,23:59[20%coursemark]PurposeThepurposeofthisassessment......
  • 基于MIMO系统的SDR-AltMin混合预编码算法matlab性能仿真
    1.算法仿真效果matlab2022a仿真结果如下(完整代码运行后无水印): 仿真操作步骤可参考程序配套的操作视频。 2.算法涉及理论知识概要        基于MIMO(Multiple-InputMultiple-Output)系统的SDR-AltMin混合预编码算法是一种先进的无线通信技术,它结合了凸优化和交替......
  • 2025蓝桥杯(单片机)备赛--蜂鸣器、继电器设备控制(三)
    一、蜂鸣器和继电器的控制蜂鸣器和继电器:也是通过P06-P04这两个IO口来进行控制,再看和连接,P0---74HC573---ULN2003-RELAY/BUZZER,出现了新的器件,先看ULN2003,查看数据手册,发现是一个能输出大电流的芯片,里面有反向器,会使输出取反,虽然继电器:低电平工作;蜂鸣器:低电平......
  • 20222301 2024-2025-1 《网络与系统攻防技术》实验五实验报告
    1.实验内容(1)从www.besti.edu.cn、baidu.com、sina.com.cn中选择一个DNS域名进行查询,获取如下信息:①DNS注册人及联系方式②该域名对应IP地址③IP地址注册人及联系方式④IP地址所在国家、城市和具体地理位置(2)尝试获取BBS、论坛、QQ、MSN中某一好友的IP地址,并查询获取该好友所......
  • 管理 Python 环境和依赖关系的工具 venv、virtualenv、pipenv 、poetry 、 miniforge
    管理Python环境和依赖关系的工具venv、virtualenv、pipenv、poetry、miniforge和anaconda的区别venv、virtualenv、pipenv、Poetry、Miniforge和Anaconda都是用于管理Python环境和依赖关系的工具,但它们在功能和使用场景上有一些显著的区别。以下是它们的主要区别:v......
  • Langchain-Chatchat 0.3 -- miniconda
    Langchain-Chatchat0.3的版本更新到了0.3本地不再使用fastchat了,这次准备使用Xinference为了方便python的版本管理,这次使用miniconda安装miniconda其实很简单的,下载对应的版本下一步下一步就行了https://docs.anaconda.com/miniconda/本次还是用的win11,下载Miniconda3......
  • CF 1257 题解
    CF1257题解ATwoRivalStudents每次交换都可以让距离增加\(1\),上界是\(n-1\).题目说至多而不是恰好交换\(x\)次,于是不需要考虑边界.BMagicStick一个重要的观察是:如果能够得到\(x\),那么就能得到任意小于等于\(x\)的数,这是操作二保证的.考虑操作\(1\)......
  • 堪称2025最强前端面试场景题,这下不慌了...
    前言2025年的春季招聘还有三个月就即将到来,很多同学开始思考前端面试中场景题的重要性。这里我提供一些见解和建议来帮助大家准备即将到来的面试。首先,理解面试中场景题的必要性是至关重要的。与算法或理论问题不同,场景题更贴近实际工作中可能遇到的具体情况,能更好地评估应聘......
  • 对 Wireshark、SolarWinds、Fiddler、TCPdump、NetworkMiner、Charles、JMeter、Fireb
    对Wireshark、SolarWinds、Fiddler、TCPdump、NetworkMiner、Charles、JMeter、Firebug、HTTPWatch和AntiARPSniffer等网络分析工具的详细对比分析,内容包括功能、特点、适用场景、平台支持等方面。表格总结了它们的主要区别与特点。工具名称功能适用场景平台支持优......
  • PEF22554HTV3.1 英特尔intel 电信 IC 调帧器,线路接口单元(LIU) P-TQFP-144 在售20000PCS
    PEF22554HTV3.1是一款由英特尔(Intel)生产的电信IC调帧器,它可以与线路接口单元(LIU)一起使用。该调帧器的封装类型是P-TQFP-144。该调帧器适用于电信领域的应用,可以用于实现数据调制和解调功能,常见于传输和接收语音、数据和视频信号的通信设备中。型号:PEF22554HTV3.1类别:集成电路......