Pagini recente » Cod sursa (job #848095) | Cod sursa (job #1452623) | Cod sursa (job #2517349) | Cod sursa (job #1897309) | Cod sursa (job #730551)
Cod sursa(job #730551)
#include<stdio.h>
#define NMAX 1000005
int k,N,primi[10],SOL[NMAX];
void citire()
{
freopen("fractii.in","r",stdin);
freopen("fractii.out","w",stdout);
scanf("%d",&N);
}
void descompunere(int x)
{
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(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] = (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("%d",SOL[N]);
return 0;
}