Pagini recente » Cod sursa (job #1483511) | Cod sursa (job #1095779) | Cod sursa (job #549885) | Cod sursa (job #2069194) | Cod sursa (job #514956)
Cod sursa(job #514956)
#include<fstream.h>
#define NMAX 1003
#define NMAX2 1000003
int ciur[NMAX];
int b[NMAX], n, i;
long long a[NMAX2], pos;
void ciurf()
{
int i, j;
for (i=2; i*i<=n; ++i)
if (ciur[i]==0)
{
b[++b[0]]=i;
for (j=i+i; j<=n; j+=i)
ciur[j]=1;
}
}
long long putere(long long d, long long x)
{
long long nr=1;
while (x%d==0)
{
nr*=d;
x/=d;
}
return nr;
}
long long numar(long long x)
{
long long d, p=1, aux=x, i=1;
d=b[1];i=1;
while (p==1 && d*d<=x)
if (x%d==0) p=putere(d, x);
else {i+=1;d=b[i];}
if (d*d>x) {d=x;p=x;}
return p/d*(d-1)*a[aux/p];
}
int main()
{
ifstream f("fractii.in");
ofstream g("fractii.out");
f>>n;
ciurf(); a[1]=1;pos=1;
for (i=2; i<=n; ++i)
{
a[i]=numar(i);
pos+=a[i]*2;
}
g<<pos<<"\n";
f.close();
g.close();
return 0;
}