作者:xq的acm之路
题目大意:给出n,算出小于等于n的所有数中,有几对互质;
思路:对每个数打表,用到欧拉函数,,
代码如下:
#include <iostream>
#include <cstring>
using namespace std;
int phi[50005];
int n;
void solve()
{
memset(phi,0,sizeof(phi));
phi[1]=1;
for(int i=2; i<=50005; i++)
{
if(!phi[i])
{
for(int j=i; j<=50005; j+=i)
{
if(!phi[j])
phi[j]=j;
phi[j]=phi[j]/i*(i-1);
}
}
}
for(int i = 2 ; i <= 50005 ; i++)
{
phi[i] += phi[i - 1];
}
}
int main()
{
solve();
while(cin>>n&&n)
{
cout<<2*phi[n]-1<<endl;
}
return 0;
}