Lightoj1007【欧拉函数-素数表】

来源:互联网 发布:一个网站几个域名 编辑:程序博客网 时间:2024/06/05 10:37

基础题。

PS:注意unsigned long long; 以及%llu

#include<bits/stdc++.h>using namespace std;typedef unsigned long long ULL;typedef long long LL; const int N=5e6+10;bool isprime[N];ULL res[N];void init(){    res[1]=1ULL;    for(LL i=1;i<=5000000;i++)    {        isprime[i]=true;        res[i]=i;    }    for(LL i=2;i<=5000000;i++)    {        if(!isprime[i]) continue;        res[i]=res[i]*(i-1)/i;        for(LL j=i+i;j<=5000000;j+=i)        {            isprime[j]=false;            res[j]=res[j]*(i-1)/i;        }    }    for(int i=2;i<=5000000;i++)        res[i]=res[i]*res[i]+res[i-1];} int main(){    int T,cas=1,a,b;    init();    scanf("%d",&T);    while(T--)    {        scanf("%d%d",&a,&b);        printf("Case %d: %llu\n",cas++,res[b]-res[a-1]);       }    return 0;}



0 0