HDU 2824 The Euler function

http://acm.hdu.edu.cn/showproblem.php?pid=2824

同上一题,裸欧拉函数

View Code
#include <iostream>

#include <cstdlib>

#include <cstring>

#include <string>

#include <stack>

#include <queue>

#include <map>

#include <algorithm>

using namespace std;

const int MAX=3000001;

int phi[MAX];

int main()

{

    for(int i=2;i<MAX;i++)

        if(!phi[i])

            for(int j=i;j<MAX;j+=i)

            {

                if(!phi[j])

                    phi[j]=j;

                phi[j]-=phi[j]/i;

            }

    int a,b;

    while(~scanf("%d%d",&a,&b))

    {

        __int64 sum=0;

        for(int i=a;i<=b;i++)

            sum+=phi[i];

        printf("%I64d\n",sum);

    }

    return 0;

}

 

你可能感兴趣的:(function)