Pagini recente » Cod sursa (job #1942893) | Cod sursa (job #802169) | oni10_2013 | Cod sursa (job #333040) | Cod sursa (job #1554879)
#include <fstream>
using namespace std;
struct alfa
{
int a,b;
};
alfa v[1000005];
int i,j,n;
unsigned long long s;
int main()
{
ifstream f("fractii.in");
ofstream g("fractii.out");
for(i=2; i<=1000000; i++)
{
v[i].a=i;
v[i].b=i-1;
}
i=2;
v[1].a=1;
v[1].b=1;
for(i=4; i<=1000000; i+=2)
{
v[i].b++;
while(v[i].a%2==0)
v[i].a/=2;
v[i].b/=2;
if(v[i].a>1)
{
v[i].b/=v[i].a;
v[i].b*=(v[i].a-1);
}
}
i=3;
v[3].b=2;
while(i*i<1000000)
{
for(j=i*2; j<=1000000; j+=i)
{
v[j].b*=v[j].a;
v[j].b/=(v[j].a-1);
v[j].b/=i;
v[j].b*=(i-1);
while(v[j].a%i==0)
v[j].a/=i;
if(v[j].a>1)
{
v[j].b/=v[j].a;
v[j].b*=(v[j].a-1);
}
}
while(v[i].a!=i-1&&i<=1000)
i+=2;
}
f>>n;
for(i=2; i<=n; i++)
{
s+=v[i].b*2;
}
g<<s+1<<'\n';
f.close(); g.close();
}