菜鸟系列——欧拉函数
来源:互联网 发布:淘宝添加背景图片代码 编辑:程序博客网 时间:2024/05/17 07:59
菜鸟就要老老实实重新学起:
euler欧拉函数:
欧拉函数就是小于n的数中与n互质的数的数目。
用法经常比较神奇,数论嘛,还是看能不能想到用出来。
这里的模版参考挑战那本书的。
模版:
//直接求解欧拉函数long long euler(long long n){ long long res=n,a=n; for(long long i=2;i*i<=a;i++) if(a%i==0) { res=res/i*(i-1); while(a%i==0) a/=i; } if(a>1) res=res/a*(a-1); return res;}//筛选法打欧拉函数表long long eul[N];void init(){ eul[1]=1; for(long long i=2;i<N;i++) eul[i]=i; for(long long i=2;i<N;i++) if(eul[i]==i) for(long long j=i;j<N;j+=i) eul[j]=eul[j]/i*(i-1);}
eg:
POJ2407 Relatives
http://poj.org/problem?id=2407
题意:
求欧拉函数。思路:
测试模版用code:
#define N 112345long long n,m;long long euler(long long n){ long long res=n,a=n; for(long long i=2;i*i<=a;i++) if(a%i==0) { res=res/i*(i-1); while(a%i==0) a/=i; } if(a>1) res=res/a*(a-1); return res;}long long eul[N];void init(){ eul[1]=1; for(long long i=2;i<N;i++) eul[i]=i; for(long long i=2;i<N;i++) if(eul[i]==i) for(long long j=i;j<N;j+=i) eul[j]=eul[j]/i*(i-1);}int main(){ int i,j,k,kk,t,x,y,z;// init(); while(scanf("%lld",&n)!=EOF&&n) { printf("%lld\n",euler(n)); } return 0;}
0 0
- 菜鸟系列——欧拉函数
- 菜鸟系列——欧拉函数
- 菜鸟系列——KMP
- 菜鸟系列——搜索
- 积性函数系列(一):欧拉函数
- 积性函数系列(一):欧拉函数
- SGU 102 —— 欧拉函数
- 数论——欧拉函数
- 51nod1136——欧拉函数
- hdu2588——GCD(欧拉函数)
- 欧拉函数的应用(2)——欧拉函数与欧拉定理的结合
- 欧拉回路系列
- 菜鸟系列——Sparse Table
- 菜鸟系列——线段树
- 菜鸟系列——划分树
- 菜鸟系列——字典树
- 菜鸟系列——回文串
- 菜鸟系列——最小生成树
- 自动获取短信验证码
- hdu 4109 Instrction Arrangement(关键路径)
- list(链表)常用成员(顺序容器)
- [网狐]前台控制帐号生成
- 45 个非常有用的 Oracle 查询语句
- 菜鸟系列——欧拉函数
- 密码强度等级
- org.apache.log4j.Logger详解
- html5+css3 权威指南阅读笔记(三)---表单及其他新增和改良元素
- Unity GameObject 中文翻译
- iOS-如何集成iOS9里的3D Touch
- About the struts2 some problem
- Ubuntu搭建FTP服务器
- 关于QT3.3下QListViewItem的应用