在百度百科学的,,本来源代码有bug,还编辑了一下百度百科。。这东西果然不靠谱。。
#include<stdio.h>
#include<string.h>
#define N 1000005
#define ll long long
int prime[N];
ll phi[N];
ll sum[N];
void dabiao()
{
int i,j,k;
memset(prime,0,sizeof(prime));
for(i=2;i*i<N;i++)
if(!prime[i])
for(j=i*i;j<N;j+=i)
prime[j]=1;
for(i=1;i<N;i++)
phi[i]=i;
for(i=2;i<N;i++)
if(!prime[i])
for(j=i;j<N;j+=i)
phi[j]=phi[j]/i*(i-1);
sum[1]=1;
for(i=2;i<N;i++)
sum[i]=sum[i-1]+phi[i];
}
int main()
{
dabiao();
int i,j,k;
int a,b;
while(~scanf("%d%d",&a,&b))
printf("%lld\n",sum[b]-sum[a-1]);
}