POJ-2478(欧拉函数)
来源:互联网 发布:游戏引擎 知乎 编辑:程序博客网 时间:2024/05/22 11:58
题目:http://poj.org/problem?id=2478
只套模板的话都不懂为什么,希望弄明白为什么才能理解和记忆的更深刻,看了好几位前辈的博客才终于搞懂欧拉函数的证明和求法,多谢以下几位大牛的博文:
1、关于数论中欧拉函数和欧拉定理的简短证明
2、数论的欧拉定理证明 & 欧拉函数公式
3、数论——欧拉函数与相关定理
4、欧拉函数
#include <cstdio>#define MAX1000000typedef long long LL;LL phi[MAX + 5] = {0};int main(){//step 1: 求出1~MAX范围内所有数的互质数个数,即每个数的欧拉函数for(int i = 2; i <= MAX; ++i) phi[i] = i;for(int i = 2; i <= MAX; i += 2) phi[i] >>= 1;//用(2-1)/2来更新所有2的倍数for(int i = 3; i <= MAX; i += 2){if(phi[i] == i){//说明i是一个素数,用(i-1)/i来更新所有i的倍数,相当于逐个遍历每个数的所有质因数for(int j = i; j <= MAX; j += i){phi[j] = phi[j] / i * (i - 1);}}}//step 2: 累加,让phi[n]表示[1,n]范围内欧拉函数的和for(int i = 3; i <= MAX; ++i) phi[i] += phi[i-1];//step 3: answer queryint n;while(scanf("%d", &n), n) printf("%lld\n", phi[n]);return 0;}
0 0
- POJ-2478(欧拉函数)
- poj 2478 (欧拉函数)
- POJ - 2478 欧拉函数..
- poj 2478 欧拉函数
- poj 2478 欧拉函数
- POJ-2478 欧拉函数
- uva 10820 poj 2407 poj 1284 poj 2478 poj 3090 (欧拉函数入门)
- poj 2478(快速求解欧拉函数优化版。。。)
- poj 2478 Farey Sequence(欧拉函数)
- poj 2478(很明显的欧拉函数)
- poj 2478 Farey Sequence(递推求欧拉函数)
- POJ - 2478 - Farey Sequence (欧拉函数)
- poj 2478 Farey Sequence(欧拉函数)
- POJ 2478 Farey Sequence(欧拉函数)
- POJ 2478-Farey Sequence(欧拉函数)
- poj 2478 Farey Sequence (欧拉函数)
- poj 2478 Farey Sequence(欧拉函数)
- POJ 2478 Farey Sequence(欧拉函数)
- C语言中结构体定义的方式
- UIBezierPath 简单使用
- hdu2955---Robberies(概率做01背包)
- 【主机规划与磁盘分区】Linux与硬件的搭配
- 天平(Not so Mobile)
- POJ-2478(欧拉函数)
- Climbing Stairs
- Hashing( 哈希查找)
- Git技巧之解决git merge的合并冲突(非树冲突)
- linux下tar.gz、tar、bz2、zip等解压缩、压缩命令小结
- MySQL各版本介绍
- Linux开启telnet远程登录服务全攻略
- 算法的魅力——读《算法帝国》体会
- 如何使用EasyUI显示表格界面