欧拉函数 φ(n) 定义:[1,N]中与N互质的数的个数

//互质与欧拉函数

/*
求欧拉函数
按欧拉函数计算公式,只要分解质因数即可
*/
int phi(int n){
int ans=n;
for(int i=;i<=sqrt(n);i++){
if(n%i==){
ans=ans/i*(i-);
while(n%i==) n/=i;
}
}
if(n>) ans=ans/n*(n-);
return ans;
}

性质:1.[1,n]中与n互质的数的和为 n*φ(n)/2;

   2.欧拉函数是积性函数

     3.p|n && p*p|n =>φ(n)=φ(n/p)*p;

     4.p|n && p*p不能整除n,则φ(n)=φ(n/p)*(p-1);

     5.sum{φ(d)}=n,d是n的约数

打表求欧拉函数

第一种是era筛的思路,O(nlogn)的复杂度,即每个质数p的倍数都乘以(1-1/p)即可

#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
int phi[];
void euler(int n){//用era筛的思路O(nlogn)复杂度
for(int i=;i<=n;i++)phi[i]=i;
for(int i=;i<=n;i++)
if(phi[i]==i)//i是质数
for(int j=;i*j<=n;j++)
phi[i*j]=phi[i*j]/i*(i-);
}
int main(){
int t,n;
euler();
scanf("%d",&t);
for(int tt=;tt<=t;tt++){
scanf("%d",&n);
int ans=;
for(int i=;i<=n;i++)
ans+=*phi[i];
printf("%d %d %d\n",tt,n,ans+);
}
}

第二种是线性筛的思路:复杂度O(n)

#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
int phi[];
int m,v[],prime[];
void euler(int n){//用era筛的思路O(nlogn)复杂度
memset(v,,sizeof v);
m=;
for(int i=;i<=n;i++){
if(v[i]==){//i是质数
v[i]=i,prime[++m]=i;
phi[i]=i-;
}
for(int j=;j<=m;j++){
if(prime[j]>v[i] || prime[j]*i>n) break;
v[i*prime[j]]=prime[j];
phi[i*prime[j]]=phi[i]*(i%prime[j]?prime[j]-://φ(n)=φ(n/p)*(p-1) 性质4
prime[j]);//φ(n)=φ(n/p)*p 性质3
}
}
}
int main(){
int t,n;
euler();
scanf("%d",&t);
for(int tt=;tt<=t;tt++){
scanf("%d",&n);
int ans=;
for(int i=;i<=n;i++)
ans+=*phi[i];
printf("%d %d %d\n",tt,n,ans+);
}
}

欧拉函数,打表求欧拉函数poj3090的更多相关文章

  1. UVA 11426 GCD - Extreme (II)(欧拉函数打表 + 规律)

    Given the value of N, you will have to find the value of G. The definition of G is given below:Here ...

  2. LightOJ - 1370 Bi-shoe and Phi-shoe (欧拉函数打表)

    题意:给N个数,求对每个数ai都满足最小的phi[x]>=ai的x之和. 分析:先预处理出每个数的欧拉函数值phi[x].对于每个数ai对应的最小x值,既可以二分逼近求出,也可以预处理打表求. ...

  3. POJ 2478 欧拉函数打表的运用

    http://poj.org/problem?id=2478 此题只是用简单的欧拉函数求每一个数的互质数的值会超时,因为要求很多数据的欧拉函数值,所以选用欧拉函数打表法. PS:因为最后得到的结果会很 ...

  4. 【poj2478-Farey Sequence】递推求欧拉函数-欧拉函数的几个性质和推论

    http://poj.org/problem?id=2478 题意:给定一个数x,求<=x的数的欧拉函数值的和.(x<=10^6) 题解:数据范围比较大,像poj1248一样的做法是不可行 ...

  5. hdu 2814 快速求欧拉函数

    /** 大意: 求[a,b] 之间 phi(a) + phi(a+1)...+ phi(b): 思路: 快速求欧拉函数 **/ #include <iostream> #include & ...

  6. A - Bi-shoe and Phi-shoe (欧拉函数打表)

    Description Bamboo Pole-vault is a massively popular sport in Xzhiland. And Master Phi-shoe is a ver ...

  7. hdu 2824 The Euler function 欧拉函数打表

    The Euler function Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Other ...

  8. HDU 1286 找新朋友 (欧拉phi函数打表)

    题意:你懂得. 析:一看这个题应该是欧拉phi函数,也就说欧拉phi函数是指求从 1 到 n 中与 n 互素的数的个数,这个题很明显是这个意思嘛,不多说了. 代码如下: #include <io ...

  9. 杭电多校第十场 hdu6434 Count 欧拉函数打表 快速打表模板

    Problem I. Count Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 524288/524288 K (Java/Other ...

随机推荐

  1. GO语言的进阶之路-爬虫进阶之路

    GO语言的进阶之路-爬虫进阶之路 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 网络爬虫是一种自动获取网页内容的程序,是搜索引擎的重要组成部分.我们今天要介绍的就是一个简单的网络爬 ...

  2. 多目标遗传算法 ------ NSGA-II (部分源码解析)二元锦标赛选择 tourselect.c

    tourselect.c  文件中共有两个函数: selection (population *old_pop, population *new_pop) individual* tournament ...

  3. 谈谈你对MVC的理解

    MVC 模式 MVC 模式代表 Model-View-Controller(模型-视图-控制器) 模式.这种模式用于应用程序的分层开发. Model(模型) - 模型代表一个存取数据的对象或 JAVA ...

  4. Emacs org-mode导出html出错

    不知道为什么,当org文件中含有#+TITLE:xxx时,导出会报类似下面的错误: Wrong type argument: listp, #("xxx" 0 3 (:parent ...

  5. IDAPython安装

    转载:All Right   (本人没有测试过) 关于IDAPython的安装教程网上的资料非常少,也不是很详细,我费了好长时间才装好,现在和大家分享一下. 注意事项 下面几点关系到安装是否成功 ID ...

  6. Linux TCP 连接数

    查看 TCP 连接数 : 每一个 IP 访问的链接数:head 默认 前10 netstat -na|grep ESTABLISHED|awk '{print $5}'|awk -F: '{print ...

  7. 打包pyinstaller

    安装:pip3 install pyinstaller 了解几个常用命令 参数 用处 -F 将程序打包成一个文件 -w 去除黑框 -i 添加程序图标 我们将需要打包的test.py文件放到桌面上,之后 ...

  8. HDU1875 畅通工程再续【最小生成树】

    题意: 在这些小岛中建设最小花费的桥,但是一座桥的距离必须在10 -- 1000之间. 思路: 用最小生成树解决吧,就那两个算法. 代码: prim #include <iostream> ...

  9. POJ 2513 Colored Sticks (欧拉回路+并查集+字典树)

    题目链接 Description You are given a bunch of wooden sticks. Each endpoint of each stick is colored with ...

  10. SpringMvc整合Mybatis并使用声明式事务

    (1).引入相关依赖 <dependency> <groupId>com.alibaba</groupId> <artifactId>druid< ...