HDU 2824 The Euler function (欧拉函数-快速打表)
来源:互联网 发布:中餐点菜软件 编辑:程序博客网 时间:2024/06/05 07:53
先打表
这个打表的方式很快,跟大佬学的,利用了求欧拉函数的几条性质
1. 对于phi [ a ] 如果a是质数,则 phi [ a ] = a - 1;
(下面这条更新一下:(虽然代码中又体现 但是这里不够清楚))
2. 对于 n 是 质数时:
当 m % n != 0 时: phi [ m * n ] = phi [ m ] * phi [ n ] ;
当 m % n == 0 时:phi [ m * n ] = phi [ m ] * n ;
#include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>#include <string>#include <cmath>#include <set>#include <map>#include <stack>#include <queue>#include <ctype.h>#include <vector>#include <algorithm>#include <sstream>#define PI acos(-1.0)#define in freopen("in.txt", "r", stdin)#define out freopen("out.txt", "w", stdout)using namespace std;typedef long long ll;const int maxn = 3000000 + 7, INF = 0x3f3f3f3f, mod = 1e9 + 7;int a, b;int phi[maxn], prim[maxn];void get_ouler(int n) { memset(phi, 0, sizeof phi); phi[1] = 1; int id = 0; for(int i = 2; i < n; ++i) { if(!phi[i]) { phi[i] = i - 1; prim[id++] = i; } for(int j = 0; j < id && prim[j]*i < maxn; ++j) { if(i % prim[j]) { phi[i*prim[j]] = phi[i] * (prim[j]-1); } else { phi[i*prim[j]] = phi[i] * prim[j]; break; } } }}int main() { get_ouler(maxn); while(scanf("%d %d", &a, &b) != EOF) { ll ans = 0; for(int i = a; i <= b; ++i) ans += (ll)phi[i]; cout << ans << endl; } return 0;}
阅读全文
1 0
- HDU 2824 The Euler function【欧拉函数 打表】
- HDU 2824 The Euler function (欧拉函数-快速打表)
- HDU The Euler function (欧拉函数打表)
- hdoj 2824 The Euler function(欧拉函数打表)
- hduoj 2824 The Euler function【欧拉函数 打表】
- The Euler function HDU杭电2824 【欧拉函数打表】
- HDU 2824 The Euler function (欧拉函数打表)
- The Euler function 欧拉函数打表
- HDOJ 2824 The Euler function (欧拉函数打表)
- hdoj The Euler function 2824 (欧拉函数打表)
- hdu 2824 The Euler function(欧拉函数)
- hdu 2824 The Euler function 欧拉函数模板题
- HDU 2824 The Euler function 欧拉函数
- hdu 2824 The Euler function(欧拉函数)
- HDU-#2824 The Euler function(欧拉函数+筛法)
- HDU 2824 The Euler function(欧拉函数)
- HDU 2824 The Euler function(欧拉函数)
- HDU 2824 The Euler function(欧拉函数)
- volatile关键字
- 程序员幽默段子
- 二叉树的前序遍历
- ⑧设计模式之适配器模式
- 动画
- HDU 2824 The Euler function (欧拉函数-快速打表)
- JSONP和CORS两种跨域方式的简单介绍和解决方案实例
- IDEA总是提示Cannot resolve symbol
- Linux下Tomcat的安装配置
- 异步请求图片
- HDU 6047
- That's all
- C语言程序设计习题 1-12 编写一个程序,以每行一个单词的形式打印其输出。
- ASP.NET Core 运行原理解剖[3]-Middleware-请求管道的构成