hdu 2824 The Euler function
快速求出欧拉函数值……注意数据类型,否则会超时的
#include<iostream>
using namespace std;
const long MMAX=3000000;
__int64 Euler[MMAX];
void Get_Euler()
{
int i,j;
for(i=1;i<MMAX;i++)
Euler[i]=i;
for(i=2;i<MMAX;i++)
{
if(Euler[i]==i)
{
for(j=i;j<MMAX;j+=i)
Euler[j]=Euler[j]/i*(i-1);
}
}
}
int main()
{
Get_Euler();
int n,m;
__int64 sum;
while(scanf("%d%d",&n,&m)!=EOF)
{
sum=0;
for(int i=n;i<=m;i++)
sum+=Euler[i];
printf("%I64d\n",sum);
}
return 0;
}

浙公网安备 33010602011771号