hdu 2824 欧拉函数
纯欧拉函数,直接上代码:
#include<iostream>
using namespace std;
const int MAX=30;
int e[MAX+1];
void euler();
int main()
{
int a,b;
__int64 ans;
euler();
while(cin>>a>>b)
{
ans=0;
for(int i=a;i<=b;i++)
{
ans+=e[i];
}
printf("%I64d\n",ans);
}
return 0;
}
void euler()
{
for(int i=1;i<=MAX;i++)
e[i]=i;
for(i=2;i<=MAX;i+=2)
{
if(i%2==0)
e[i]/=2;
}
for(i=3;i<=MAX;i+=2)
{
if(e[i]==i)
{
for(int j=i;j<=MAX;j+=i)
{
e[j]=e[j]/i*(i-1);
}
}
}
}