欧拉函数    ψ(x)=x*(1-1/pi)  pi为x的质数因子

特殊性质(图片内容就是图片后面的文字)

欧拉函数是积性函数——若m,n互质,   ψ(m*n)=ψ(m)*ψ(n);

当n为奇数时,                 ψ(2*n)=ψ(n);

若n为质数则                                                                 ψ(n)=n-1;

代码实现求欧拉函数  复杂度O(n*n)  (有优化会补上)

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int maxn=;
bool prime[maxn];
int p[maxn]; // form 1 kaishi
int ou[maxn];
int cnt; // fan wei lei zhi shu ge shu
void build_prime(int n)
{
for(int i=;i<=n;i++) prime[i]=;
for(int i=;i<=n;i++)
{
if(prime[i]==) p[++cnt]=i;
for(int j=;j<=cnt && i*p[j]<=n;j++)
{
prime[i*p[j]]=;
if(i%p[j]==) break;
}
}
}
void build_oulahanshu(int n)
{
for(int i=;i<=n;i++)
{
int num=i;
int k=;
for(int j=;p[j]<=i && j<=cnt;j++)
{
if(i%p[j]==) num*=(p[j]-),k*=p[j];
}
ou[i]=num/k;
// cout<<"==="<<ou[i]<<endl;
}
}
int32_t main()
{
int n; cin>>n;
build_prime(n); cout<<cnt<<endl;
build_oulahanshu(n);
while(n--)
{
int x; cin>>x;
cout<<ou[x]<<endl;
}
}

O(n log n)

#include<bits/stdc++.h>
using namespace std;
#define Max 1000001
int euler[Max];
int main(){
euler[]=;
for(int i=;i<Max;i++)
euler[i]=i;
for(int i=;i<Max;i++)
if(euler[i]==i)
for(int j=i;j<Max;j+=i)
euler[j]=euler[j]/i*(i-);
for(int i=;i<=;i++)
{
cout<<euler[i]<<" ";
if( (i+)%== )cout<<endl;
} }

o(n)

#include<bits/stdc++.h>
using namespace std;
const int maxn=1e7+;
int vis[maxn];
int prime[maxn];
int phi[maxn];
void euler(int n)
{
memset(vis,,sizeof(vis));
int tot=;
phi[1]=1;
for(int i=;i<=n;i++)
{
if(vis[i]==)
{
vis[i]=i;
prime[++tot]=i; // su shu hai
phi[i]=i-; // su shu de xian chu li
}
for(int j=;j<=tot && prime[j]*i<n;j++)
{
if(prime[j]>vis[i] )
{
// 超出n的范围 或者 i有比prime[j]更小的质因子;
break;
}
// prime[j]是i*prime[j]的最小质因子
vis[i*prime[j]]=prime[j];
// phi[i*prime[j]]=phi[i]*( i%prime[j]?prime[j]-1:prime[j]);
if( i%prime[j])
phi[i*prime[j]]=phi[i]*(prime[j]-);
else
phi[i*prime[j]]=phi[i]*prime[j]; }
}
}
int main()
{
int n=1e7+;
euler(n);
cout<<phi[]<<endl;
}

欧拉函数  已经优化到o(n)的更多相关文章

  1. POJ2154 Color【 polya定理+欧拉函数优化】(三个例题)

    由于这是第一天去实现polya题,所以由易到难,先来个铺垫题(假设读者是看过课件的,不然可能会对有些“显然”的地方会看不懂): 一:POJ1286 Necklace of Beads :有三种颜色,问 ...

  2. HDU5780 gcd (BestCoder Round #85 E) 欧拉函数预处理——分块优化

    分析(官方题解): 一点感想: 首先上面那个等式成立,然后就是求枚举gcd算贡献就好了,枚举gcd当时赛场上写了一发O(nlogn)的反演,写完过了样例,想交发现结束了 吐槽自己手速慢,但是发了题解后 ...

  3. poj2409 & 2154 polya计数+欧拉函数优化

    这两个题都是项链珠子的染色问题 也是polya定理的最基本和最经典的应用之一 题目大意: 用m种颜色染n个珠子构成的项链,问最终形成的等价类有多少种 项链是一个环.通过旋转或者镜像对称都可以得到置换 ...

  4. 【洛谷】4917:天守阁的地板【欧拉函数的应用】【lcm与gcd】【同除根号优化】

    P4917 天守阁的地板 题目背景 在下克上异变中,博丽灵梦为了找到异变的源头,一路打到了天守阁 异变主谋鬼人正邪为了迎击,将天守阁反复颠倒过来,而年久失修的天守阁也因此掉下了很多块地板 异变结束后, ...

  5. [NOI2010][bzoj2005] 能量采集 [欧拉函数+分块前缀和优化]

    题面: 传送门 思路: 稍微转化一下,可以发现,每个植物到原点连线上植物的数量,等于gcd(x,y)-1,其中xy是植物的横纵坐标 那么我们实际上就是要求2*sigma(gcd(x,y))-n*m了 ...

  6. poj2154Color polya定理+欧拉函数优化

    没想到贱贱的数据居然是错的..搞得我调了一中午+晚上一小时(哦不d飞LJH掉RP毕竟他是BUFF)结果重判就对了五次.. 回归正题,这题傻子都看得出是polya定理(如果你不是傻子就看这里),还没有翻 ...

  7. POJ-2888 Magic Bracelet(Burnside引理+矩阵优化+欧拉函数+逆元)

    Burnside引理经典好题呀! 题解参考 https://blog.csdn.net/maxwei_wzj/article/details/73024349#commentBox 这位大佬的. 这题 ...

  8. poj3696 快速幂的优化+欧拉函数+gcd的优化+互质

    这题满满的黑科技orz 题意:给出L,要求求出最小的全部由8组成的数(eg: 8,88,888,8888,88888,.......),且这个数是L的倍数 sol:全部由8组成的数可以这样表示:((1 ...

  9. poj2154-color-polyan次二面体+欧拉函数优化

    N<=1e9,O(nlogn)的做法会超时.从枚举置换转变为枚举轮换长度,然后可以利用欧拉函数,把复杂度变为O(√n * logn) /*---------------------------- ...

随机推荐

  1. 01背包问题之2(dp)

    01背包问题之2 有n个物品,重量和价值分别为wi和vi,从这些物品中挑选出重量不超过W的物品,求所有挑选方案中物品价值总和的最大值 限制条件: 1 <= n <= 100; 1 < ...

  2. DDR3和eMMC区别

    DDR3内存条和eMMC存储器区别: 1. 存储性质不同:2. 存储容量不同:3. 运行速度不同:4. 用途不同. 具体区别如下: 1.存储性质不同:eMMC是非易失性存储器,不论在通电或断电状态下, ...

  3. linux操作系统及命令Part 1

    1.关于linux系统的安装与流程     (1)下载Vmware workstation 与 linux系统(centos版本.redhat版本.Ubuntu版本...)镜像. (2)详细安装见有道 ...

  4. 一些做vue前端的经验

    1.先赋值,后渲染 场景:表格渲染中,一般都是这样把json的东西传给table的 this.tableData = json.data.rows 然后的话我们一般会在渲染前对json中的数据做一些转 ...

  5. 【转载】OpenCV 摄像头控制

    参考:[OpenCV] -- 简单摄像头操作 - 代码人生 - 博客频道 - CSDN.NET http://blog.csdn.net/qiurisuixiang/article/details/8 ...

  6. mysql 内置函数和sql server 内置函数的区别

    以下函数均没有对参数做说明,使用的使用需要了解其参数内容 数据库 sql server mysql oracle 举例 获得当前系统时间 getdate() now() sysdate  注意不是函数 ...

  7. 卷积与反卷积以及步长stride

    1. 卷积与反卷积 如上图演示了卷积核反卷积的过程,定义输入矩阵为 I(4×4),卷积核为 K(3×3),输出矩阵为 O(2×2): 卷积的过程为:Conv(I,W)=O 反卷积的过称为:Deconv ...

  8. C数据结构 : 线性表 与 链表

    一.线性表 一般表现为数组,使用一组地址连续的存储单元依次存储数据元素,如图: 它具有如下特点: 长度固定,必须在分配内存之前确定数组的长度. 存储空间连续,即允许元素的随机访问. 存储密度大,内存中 ...

  9. fortran学习网站

    https://www.sciencesoft.cn/Fortran/Index.htm http://m.fcode.cn/

  10. <Consistency><of HBase><CAP><ACID>

    Overview 讨论一些(分布式)(存储)系统的一致性 CAP原理 随着分布式事务的出现,传统的单机事务模型(ACID)已经无法胜任,尤其是对于一个高访问量.高并发的互联网分布式系统来说. 如何构建 ...