Pagini recente » Cod sursa (job #679216) | Cod sursa (job #2917457) | Cod sursa (job #2145713) | Cod sursa (job #2802573) | Cod sursa (job #51600)
Cod sursa(job #51600)
#include<stdio.h>
#include<math.h>
#define Nmax 1000000
int N;
long long S=0;
int prim[Nmax];
void citire ()
{
FILE *in = fopen ("fractii.in", "rt");
fscanf (in, "%d", &N);
fclose(in);
}
void preproc()
{
int p[Nmax];
prim[0]=0;
for(int i=2;i<=N;i++)
{
if(!p[i])
{
for(int j=2;j*i<=N;j++)
p[j*i]=1;
}
}
for(int j=1;j<=N;j++)
if(!p[j])
{
prim[0]++;
prim[prim[0]]=j;
}
}
void calcul ()
{
preproc();
for(int i=2;i<=N;i++)
{
int k=N;
{
double p=i;
for(int j=2;j<=prim[0] && j<=i;j++)
if(i%prim[j]==0)
p*=(1-(double)1/prim[j]);
k=p;
}
S+=k;
}
S=S*2+1;
}
void afisare ()
{
FILE *out = fopen ("fractii.out", "wt");
fprintf(out, "%lld", S);
fclose(out);
}
int main ()
{
citire();
calcul();
afisare ();
return 0;
}