欧拉函数之HDU2824 The Euler function
2015-09-25 15:32
281 查看
也是一道裸的欧拉函数题,但是需要打表处理,不然会T。
#include <stdio.h> #include <ctype.h> #include <string.h> #include <stdlib.h> #include <limits.h> #include <math.h> #include <algorithm> #include <stack> #include <queue> #include <vector> #include <map> #include <set> #include <string> #include <sstream> using namespace std; #define lson l,m,rt<<1 #define rson m+1,r,rt<<1|1 typedef long long LL; const double pi=4.0*atan(1.0); const int MAXN=3000005; int euler_phi(int n) { int ans=n; int k=n; for(int i=2;i*i<=k;i++) { if(n%i==0) { ans=ans/i*(i-1); while(n%i==0) n/=i; } } if(n>1) ans=ans/n*(n-1); return ans; } LL phi[MAXN]; void phi_table(int n) { for(int i=2;i<=n;i++) phi[i]=0; phi[1]=1; for(int i=2;i<=n;i++) if(!phi[i]) for(int j=i;j<=n;j+=i) { if(!phi[j]) phi[j]=j; phi[j]=phi[j]/i*(i-1); } } int main() { int T; int n,m; phi_table(3000000); phi[0]=0; for(int i=1;i<=3000000;i++) phi[i]=phi[i]+phi[i-1]; while(scanf("%d%d",&n,&m)!=EOF) { printf("%I64d\n",phi[m]-phi[n-1]);//也可以直接求n到m的欧拉函数之和 } return 0; }
相关文章推荐
- 用nginx搭建一个简单的代理服务器
- HDU 3915 Game(拆位,高斯消元)
- Swift - 计算次方(2的N次方,2的随机次方)
- Swift - 几种使用数组的数据存储模型
- SecureCRT的使用方法和技巧(详细使用教程)
- 小知识
- php5.2.17及手动打补丁php-fpm安装
- 词典编码
- HTML5: 下一代的 HTML
- Linux c 通过domain获取IP地址
- 利用C3P0连接池连接mysql数据库,超过几小时后连接报wait_timeout错误
- 二叉树遍历 递归与非递归 Java
- Java_IDE_Eclipse_自动格式化
- NSStringEncoding关于文字编码问题的解决方法
- Swift - 生成各种控件的工厂类(包含标签,按钮,输入框等)
- 设计与实现简单而经常使用的权限系统(四):无需维护level,递归构建树
- if和switch的选择
- 多个onscroll事件解决
- checkedListBox设置单击选中
- div中的table内容过多时不超出div的范围解决方法