Pagini recente » Cod sursa (job #882701) | Cod sursa (job #3194260) | Cod sursa (job #877227) | Cod sursa (job #1456557) | Cod sursa (job #730553)
Cod sursa(job #730553)
#include<stdio.h>
#define NMAX 1000005
long long int k,N,primi[10],SOL[NMAX];
void citire()
{
freopen("fractii.in","r",stdin);
freopen("fractii.out","w",stdout);
scanf("%lld",&N);
}
void descompunere(long long int x)
{
long long int i;k = 0;
for(i = 2; x!=1; i++)
{
if(x%i==0)
{
for(;x%i==0;x/=i);
primi[++k] = i;
}
}
}
void euler()
{
SOL[1] = 1, SOL[2] = 1;
for(long long int i = 3 ; i <= N; i++)
{
descompunere(i);
double e = i*1.0;
for(int j = 1 ; j <= k ; j++)
e*=1-(1.0/primi[j]);
SOL[i] = (long long int)e;
}
}
void construire()
{
for(int i = 2 ; i <= N; i++)
SOL[i] = SOL[i-1] + (2*SOL[i]);
}
int main()
{
citire();
euler();
construire();
printf("%lld",SOL[N]);
return 0;
}