欧拉函数 已经优化到o(n)
欧拉函数 ψ(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)的更多相关文章
- POJ2154 Color【 polya定理+欧拉函数优化】(三个例题)
由于这是第一天去实现polya题,所以由易到难,先来个铺垫题(假设读者是看过课件的,不然可能会对有些“显然”的地方会看不懂): 一:POJ1286 Necklace of Beads :有三种颜色,问 ...
- HDU5780 gcd (BestCoder Round #85 E) 欧拉函数预处理——分块优化
分析(官方题解): 一点感想: 首先上面那个等式成立,然后就是求枚举gcd算贡献就好了,枚举gcd当时赛场上写了一发O(nlogn)的反演,写完过了样例,想交发现结束了 吐槽自己手速慢,但是发了题解后 ...
- poj2409 & 2154 polya计数+欧拉函数优化
这两个题都是项链珠子的染色问题 也是polya定理的最基本和最经典的应用之一 题目大意: 用m种颜色染n个珠子构成的项链,问最终形成的等价类有多少种 项链是一个环.通过旋转或者镜像对称都可以得到置换 ...
- 【洛谷】4917:天守阁的地板【欧拉函数的应用】【lcm与gcd】【同除根号优化】
P4917 天守阁的地板 题目背景 在下克上异变中,博丽灵梦为了找到异变的源头,一路打到了天守阁 异变主谋鬼人正邪为了迎击,将天守阁反复颠倒过来,而年久失修的天守阁也因此掉下了很多块地板 异变结束后, ...
- [NOI2010][bzoj2005] 能量采集 [欧拉函数+分块前缀和优化]
题面: 传送门 思路: 稍微转化一下,可以发现,每个植物到原点连线上植物的数量,等于gcd(x,y)-1,其中xy是植物的横纵坐标 那么我们实际上就是要求2*sigma(gcd(x,y))-n*m了 ...
- poj2154Color polya定理+欧拉函数优化
没想到贱贱的数据居然是错的..搞得我调了一中午+晚上一小时(哦不d飞LJH掉RP毕竟他是BUFF)结果重判就对了五次.. 回归正题,这题傻子都看得出是polya定理(如果你不是傻子就看这里),还没有翻 ...
- POJ-2888 Magic Bracelet(Burnside引理+矩阵优化+欧拉函数+逆元)
Burnside引理经典好题呀! 题解参考 https://blog.csdn.net/maxwei_wzj/article/details/73024349#commentBox 这位大佬的. 这题 ...
- poj3696 快速幂的优化+欧拉函数+gcd的优化+互质
这题满满的黑科技orz 题意:给出L,要求求出最小的全部由8组成的数(eg: 8,88,888,8888,88888,.......),且这个数是L的倍数 sol:全部由8组成的数可以这样表示:((1 ...
- poj2154-color-polyan次二面体+欧拉函数优化
N<=1e9,O(nlogn)的做法会超时.从枚举置换转变为枚举轮换长度,然后可以利用欧拉函数,把复杂度变为O(√n * logn) /*---------------------------- ...
随机推荐
- 关于静态资源是否应该放到WEB-INF目录
首先,css/js/html没有必要放在WEB-INF下. 最终这些会被原封不动的展现在客户端,所以访问安全根本就不会成为问题. jsp放在web-inf下,原因主要有两个 远古时代的模式会把业务逻辑 ...
- core net 2 nuget的数据源包
基本都是 在 obj里面 debug里面 porgect.assetc.json
- ubuntu 删除开机系统引导,设置快速开机和安静开机
1.隐藏开机选择界面 1.sudo gedit /etc/default/grub GRUB_HIDDEN_TIMEOUT=0 GRUB_HIDDEN_TIMEOUT_QUIET=true //隐藏开 ...
- 5.9 C++重载转型操作符
参考:http://www.weixueyuan.net/view/6387.html 注意: 转型构造函数可以将其它类型的参数转换为类类型,如果我们要进行相反的转换过程,将类类型转换为其它数据类型, ...
- TBody scrollbar 设置
由于scrollbar自身有宽度 对于tbody来说可能会挤压与thead不对齐下面办法能够解决大致问题 1.设置tbody display:block : overflow-y:auto:(并且修 ...
- turtle
画一组同切圆 输入 import turtle turtle.color('red') turtle.circle(30) turtle.circle(60) turtle.circle(90) tu ...
- IE浏览器兼容的处理方式之一,使用特殊的注释 <!--[if IE]> ....<![endif]-->
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 3-D models provided some resources
http://d-earth.jamstec.go.jp/GAP_P4/ http://ds.iris.edu/ds/products/emc-earthmodels/
- 玩转 React【第02期】:恋上 React 模板 JSX
往期回顾 前文中我们讲解了利用 ReactElement 来编写React程序,但是我们也看到这种方式编写 React 特别的麻烦,而且层级结构特别不清晰.今天我们来看一种优雅的编写React的代码的 ...
- MySQL:MySQL Workbench的使用
MySQL Workbench 一.布局介绍 附:图片转自https://blog.csdn.net/qq_19891827/article/details/53995079 二.创建数据库 第一步: ...