Processing math: 100%

积性函数线性筛

OI中有时需要我们线性筛某些函数,我们筛的主要是积性函数

1st:线性筛素数

2nd:欧拉函数线性筛:

欧拉函数其他求法:

求单个数的欧拉函数:

复制代码
 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<algorithm>
 5 using namespace std;
 6 int n;
 7 int phi(int N){
 8     int m=N;
 9     for(int i=2;i*i<=N;++i){
10         if(N%i==0){
11             m=m/i*(i-1);
12             while(N%i==0) N/=i;
13         }
14     }
15     if(N>1) m=m/N*(N-1);
16     return m;
17 }
18 int main(){
19     scanf("%d",&n);
20     printf("%d\n",phi(n));
21     return 0;
22 }
View Code
复制代码

复杂度略大于线性的求法:

复制代码
 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<algorithm>
 5 using namespace std;
 6 int n,phi[1000006];
 7 void get_phi(int N){
 8     for(int i=1;i<=N;++i) phi[i]=i;
 9     for(int i=2;i<=N;++i){
10         if(phi[i]==i){
11             for(int j=i;j<=N;j+=i){
12                 phi[j]=phi[j]/i*(i-1);
13             }
14         }
15     }
16 }
17 int main(){
18     scanf("%d",&n);
19     get_phi(n);
20     for(int i=1;i<=n;++i){
21         printf("%d\n",phi[i]);
22     }
23     return 0;
24 }
View Code
复制代码

欧拉函数一个性质:d|nϕ(d)=n

3rd:莫比乌斯函数线性筛(虽然我不知道莫比乌斯函数是什么以及怎么用)

4th:线性筛约数个数:

5th:线性筛约数和:

6th:其他积性函数?卷积?不会了。。。

伪代码:

 

posted @   xukl21  阅读(206)  评论(0编辑  收藏  举报
编辑推荐:
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
· .NET 9 new features-C#13新的锁类型和语义
· Linux系统下SQL Server数据库镜像配置全流程详解
阅读排行:
· Sdcb Chats 技术博客:数据库 ID 选型的曲折之路 - 从 Guid 到自增 ID,再到
· Winform-耗时操作导致界面渲染滞后
· Phi小模型开发教程:C#使用本地模型Phi视觉模型分析图像,实现图片分类、搜索等功能
· 语音处理 开源项目 EchoSharp
· drools 规则引擎和 solon-flow 哪个好?solon-flow 简明教程
点击右上角即可分享
微信分享提示