HDU 2824

来源:互联网 发布:在b站做网络直播有延迟 编辑:程序博客网 时间:2024/05/19 15:44

【题目分析】
欧拉函数


【代码】

#include <cstdio>#include <cmath>#include <cstring>#include <iostream>#include <algorithm>using namespace std;long long phi[3000001],pri[3000001];int top=0,l,r;inline void init(){    for (int i=2;i<=3000000;++i)    {        if (!phi[i]) pri[++top]=i,phi[i]=i-1;        for (int j=1;j<=top&&i*pri[j]<=3000000;++j)        {            if (i%pri[j]==0) {phi[i*pri[j]]=phi[i]*pri[j];break;}            else phi[i*pri[j]]=phi[i]*(pri[j]-1);        }    }}int main(){    init();    for (int i=2;i<=3000000;++i) phi[i]+=phi[i-1];    while (scanf("%d%d",&l,&r)!=EOF)        printf("%lld\n",phi[r]-phi[l-1]);}
0 0