博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
51Nod 1136 欧拉函数 Label:数论
阅读量:6261 次
发布时间:2019-06-22

本文共 1626 字,大约阅读时间需要 5 分钟。

对正整数n,欧拉函数是少于或等于n的数中与n互质的数的数目。此函数以其首名研究者欧拉命名,它又称为Euler's totient function、φ函数、欧拉商数等。例如:φ(8) = 4(Phi(8) = 4),因为1,3,5,7均和8互质。
 
Input
输入一个数N。(2 <= N <= 10^9)
Output
输出Phi(n)。
Input示例
8
Output示例
4

代码

1 #include
2 #include
3 #include
4 #include
5 using namespace std; 6 7 int a; 8 int euler(int n){ //返回euler(n) 9 int res=n,a=n; 10 for(int i=2;i*i<=a;i++){ 11 if(a%i==0){ 12 res=res/i*(i-1);//先进行除法是为了防止中间数据的溢出 13 while(a%i==0) a/=i; 14 } 15 } 16 if(a>1) res=res/a*(a-1); 17 return res; 18 } 19 20 int main(){21 // freopen("01.in","r",stdin);22 while(scanf("%d",&a)==1&&a){23 cout<
<

这是根据定义直接求出的函数,

到处看了一些博客,百度百科讲得最详细,

 

转载一下两种模板:

对正整数n,欧拉函数是少于或等于n的数中与n互质的数的数目。

例如euler(8)=4,因为1,3,5,7均和8互质。Euler函数表达通式:euler(x)=x(1-1/p1)(1-1/p2)(1-1/p3)(1-1/p4)…(1-1/pn),其中p1,p2……pn为x的所有素因数,x是不为0的整数。euler(1)=1(唯一和1互质的数就是1本身)。 

欧拉公式的延伸:

一个数的所有质因子之和是euler(n)*n/2。

那么如何变成实现欧拉函数呢?下面通过两种不同的方法来实现。

第一种方法是直接根据定义来实现,同时第一种方法也是第二种筛法的基础,当好好理解。

 

 

1 //直接求解欧拉函数   2 int euler(int n){ //返回euler(n)    3      int res=n,a=n;   4      for(int i=2;i*i<=a;i++){   5          if(a%i==0){   6              res=res/i*(i-1);//先进行除法是为了防止中间数据的溢出    7              while(a%i==0) a/=i;   8          }   9      }  10      if(a>1) res=res/a*(a-1);  11      return res;  12 }  13   14 //筛选法打欧拉函数表   15 #define Max 1000001  16 int euler[Max];  17 void Init(){   18      euler[1]=1;  19      for(int i=2;i

 

转载于:https://www.cnblogs.com/radiumlrb/p/5930502.html

你可能感兴趣的文章
英孚教育全面上云与Serverless构建之路
查看>>
可执行镜像——开发环境的Docker化之路
查看>>
IntelliJ IDEA 2018.2支持Java 11、MacBook Touch Bar等新特性
查看>>
Microsoft 推出在AzureApp Service上支持Windows容器的公开预览版
查看>>
腾讯云携手朋迈推出“综合能源服务平台” 实现能源资源“智慧化”运营
查看>>
关于vue+webpack全局npm包全局引用的配置。
查看>>
LeetCode[354] Russian Doll Envelopes
查看>>
自动切换项目的node版本
查看>>
PHP设计模式之迭代器模式
查看>>
Mysql优化策略
查看>>
python基础知识踩点
查看>>
3月5日云栖精选夜读 | 2019阿里云开年Hi购季新用户分会场全攻略!
查看>>
IJCAI阿里论文 | JUMP: 一种点击和停留时长的协同预估器
查看>>
腾讯十年投资记
查看>>
搭建直播平台需要从CDN“内部”入手
查看>>
python实现堆栈数据结构及其基本方法
查看>>
制造业瓶颈如何突破?“智变与突破——制造业人工智能产业峰会·南京”来献策...
查看>>
Linux shell 遍历
查看>>
MySQL ERROR 1372 (HY000): Password hash should be a 41-digit hexadecimal number
查看>>
如何设计一个高可用的运营系统
查看>>