欧拉函数挺有用的,现在用了比较简单的方法,是求较少时适用的,如果多时就不行了超时,还有一种方法等有时间上提交看看……数论起步!!!吧……
#include <iostream>
#include <map>
#include <deque>
#include <queue>
#include <stack>
#include <string>
#include <cstring>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <map>
#include <set>
using namespace std;
long long s[3000010]= {0};
int main()
{
int a,b,i,j;
s[1]=1;
for(i=2; i<3000010; i++)
{
if(!s[i])
{
for(j=i; j<3000010; j+=i)
{
if(!s[j]) s[j]=j;
s[j]=s[j]/i*(i-1);
}
}
s[i]+=s[i-1];
}
while(cin>>a>>b)
{
cout<<s[b]-s[a-1]<<endl;
}
return 0;
}