Pagini recente » Cod sursa (job #23584) | Cod sursa (job #784307) | Cod sursa (job #2622022) | Cod sursa (job #756000) | Cod sursa (job #51583)
Cod sursa(job #51583)
#include<stdio.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()
{
for(int i=2;i<=N;i++)
{
if(!prim[i])
{
for(int j=2;j*i<=N;j++)
prim[j*i]=1;
}
}
}
void calcul ()
{
preproc();
S+=N;
for(int i=2;i<=N;i++)
{
int k=N;
int p=1;
if(!prim[i])
k-=N/i;
else
for(int j=2;j<=i;j++)
if(i%j==0 && !prim[j])
{
k-=N/j;
p*=j;
if(prim[p])
k+=N/p;
}
S+=k;
}
}
void afisare ()
{
FILE *out = fopen ("fractii.out", "wt");
fprintf(out, "%lld", S);
fclose(out);
}
int main ()
{
citire();
calcul();
afisare ();
return 0;
}