hdu3572线性欧拉筛
2024-09-07 21:37:34
用线性筛来筛,复杂度O(n)
#include<bits/stdc++.h>
#include<ext/rope>
#define fi first
#define se second
#define mp make_pair
#define pb push_back
#define pii pair<int,int>
#define C 0.5772156649
#define pi acos(-1.0)
#define ll long long
#define mod 1000000007
#define ls l,m,rt<<1
#define rs m+1,r,rt<<1|1 using namespace std;
using namespace __gnu_cxx; const double g=10.0,eps=1e-;
const int N=+,maxn=+,inf=0x3f3f3f; bool isprime[N];
int prime[N],cnt,phi[N];
void getprime()
{
cnt=;
// memset(isprime,1,sizeof isprime);
// isprime[1]=1;
for(int i=;i<N;i++)
{
if(!isprime[i])
{
prime[++cnt]=i;
phi[i]=i-;
}
for(int j=;j<=cnt&&i*prime[j]<N;j++)
{
isprime[i*prime[j]]=;
if(i%prime[j]==)
{
phi[i*prime[j]]=phi[i]*prime[j];
break;
}
phi[i*prime[j]]=phi[i]*phi[prime[j]];
}
}
}
int main()
{
getprime();
int a,b;
while(~scanf("%d%d",&a,&b))
{
ll ans=;
for(int i=a;i<=b;i++)
ans+=phi[i];
printf("%I64d\n",ans);
}
return ;
}
/******************* ********************/
类似于素数筛,利用欧拉函数是积性函数f(a*b)=f(a)*f(b)性质
素数i的欧拉函数值为i-1,如果是合数,那么利用最小的因子来筛它
最新文章
- UI拼图导出脚本,兼容cegui的ImageSet格式
- Intent官方教程(5)在manifest中给组件添加<;Intent-filter>;
- 包含到cocos2d-x里的tcpsocket源码
- JavaScript高级之闭包的概念及其应用
- Java线程小记
- JS中window.showModalDialog()详解(转)
- CentOS7 安装eclipse
- c# 如何找到项目中图片的相对路径
- 大数据---Ranger-1
- html css笔记zht
- Linux安装Tomcat-Nginx-FastDFS-Redis-Solr-集群——【第六集之补充:文本编辑器vi/vim】
- Springboot入门之分布式事务管理
- 巧用这19条MySQL优化,效率至少提高3倍
- java随笔3 spring 的注入执行逻辑顺序
- 程序猿(媛)的葵花宝典-- 必备idea 插件plugins 提高编码效率
- CentOS6.5 安装Storm集群
- 用dlopen,dlsym加载动态链接库.so中函数
- Java JVM运行时数据区,内存管理和GC垃圾回收
- SPSS学习系列之SPSS Modeler Server是什么?
- 【转】Android中获取应用程序(包)的信息-----PackageManager的使用(一)