Pagini recente » Cod sursa (job #2640442) | Cod sursa (job #354922) | Cod sursa (job #2606528) | Cod sursa (job #2508612) | Cod sursa (job #2114432)
#include <cstdio>
using namespace std;
int fi[1010];
bool coprim(int a,int b)
{
int r,aux;
if(b>a)
{
aux=a;
a=b;
b=aux;
}
while(b)
{
r=a%b;
a=b;
b=r;
}
if(a==1)
return 1;
return 0;
}
bool isprime(int k)
{
if(k==1||k==4)
return 0;
if(k==2||k==3||k==5)
return 1;
if(k%2==0)
return 0;
int d;
for(d=3; d*d<=k; d+=2)
if(k%d==0)
return 0;
return 1;
}
void phi()
{
int i,j;
fi[2]=1;
fi[3]=2;
fi[4]=2;
for(i=5; i<=1005; i++)
{
if(isprime(i))
fi[i]=i-1;
else
{
fi[i]=1;
for(j=2; j<=i; j++)
if(coprim(i,j))
fi[i]++;
}
}
}
int putere(int a,int b)
{
int prod=1,i;
for(i=1; i<=b-1; i++)
prod*=a;
return prod*(prod-1);
}
int rasp(int k)
{
if(k<=1001)
return fi[k];
int d,put=0;
for(d=2; d*d<=k; d++)
if(k%d==0)
{
if(isprime(d))
while(k%d==0)
{
put++;
k/=d;
}
if(put==1||put==0)
return rasp(d)*rasp(k/d);
return putere(d,put)*rasp(k/d);
}
}
int main()
{
freopen("fractii.in","r",stdin);
freopen("fractii.out","w",stdout);
int n,i;
long long sum=0;
scanf("%d",&n);
phi();
for(i=n; i>=2; i--)
sum+=2*rasp(i);
//printf("%lld",sum+1);
printf("%d",rasp(200200));
return 0;
}