数论总结1
来源:互联网 发布:爱普生r230清零软件 编辑:程序博客网 时间:2024/05/29 16:54
数论
最近ACM培训学习了数论方面的知识,总结一下,以备翻阅。
1.欧拉函数(Euler's totient function)
简介:
详见百度百科点击打开链接
对正整数n,欧拉函数是 1,2,3......n-1,n 中与n互质的数的个数。通常表示为φ(n)。
例如:φ(5) = 4 {1 2 3 4} φ(8) = 4 {1 3 5 7
通式:
φ(x) = x(1-1/p1)(1-1/p2)(1-1/p3)(1-1/p4)…..(1-1/pn), 其中p1, p2……pn为x的所有质因数
例:12=2*2*3那么φ(12) = 12*(1-1/2)*(1-1/3)=4
另:若n是质数p的k次幂,φ(n)=p^k-p^(k-1)=(p-1)p^(k-1),因为除了p的倍数外,其他数都跟n互质。
代码:
下面通过两种不同的方法来实现。第一种方法是直接根据定义来实现,
同时第一种方法也是第二种筛法的基础。
<span style="font-size:14px;">//直接求解法int eular(int n) { //返回euler(n) int res=n, a=n; for(int 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;}//筛选法打欧拉函数表#define Max 1000001 int euler[Max]; void Init(){ for(int i=1;i<Max;i++) euler[i]=i; for(int i=2;i<Max;i++) if(euler[i]==i) for(int j=i;j<Max;j+=i) euler[j]=euler[j]/i*(i-1);//先进行除法是为了防止中间数据的溢出 }</span><span style="font-size:18px;"> </span>
0 0
- 数论总结1
- 数论总结1
- 数论总结(1)
- 数论总结1
- 1-16数论学习总结
- 数论模板(总结1)
- 数论总结
- 数论总结
- 数论总结
- 数论总结
- 数论总结
- 数论总结
- 数论总结
- 数论总结
- 数论总结
- 数论总结
- 数论总结
- ACM数论总结
- java常量池中string的问题
- Android studio安装Genymotion插件
- Android 进程常驻(1)----开篇
- matlab中的clc命令和clear命令
- Spring Data MongoDB实战(上)
- 数论总结1
- 泛型集合和泛型委托
- zoj3812 We Need Medicine 背包+位优化
- shell
- Android通过startService实现批量下载示例
- 文章标题
- HDUOJ_1196(二进制-十进制)
- HDOJ 1284 钱币兑换问题(完全背包)
- 来报到啦