//预处理出欧拉函数
#include<cstdio>
#include<cstring>
typedef unsigned long long ll;
const int N=5e6+10;
ll phi[N];
void init()
{
memset(phi,0,sizeof(phi));
phi[1]=1;
int i,j;
for(i=2;i<=N;i++)
{
if(!phi[i])
{
for(j=i;j<=N;j+=i)
{
if(!phi[j])
{
phi[j]=j;
}
phi[j]=phi[j]/i*(i-1);
}
}
}
for(i=1;i<=N;i++)
phi[i]=phi[i-1]+phi[i]*phi[i];
}
int main()
{
//freopen("in.txt","r",stdin);
int t,a,b,sum,p,i;
scanf("%d",&t);
init();
for(int ca=1;ca<=t;ca++)
{
scanf("%d%d",&a,&b);
printf("Case %d: %llu\n",ca,phi[b]-phi[a-1]);
}
return 0;
}
【题解】LightOJ1007Mathematically Hard 欧拉函数
最新推荐文章于 2022-02-20 19:13:24 发布