Pagini recente » Cod sursa (job #2177669) | Cod sursa (job #590621) | Cod sursa (job #2944486) | Cod sursa (job #1433924) | Cod sursa (job #68390)
Cod sursa(job #68390)
#include <stdio.h>
#define infile "fractii.in"
#define outfile "fractii.out"
#define nmax 1000000
long n, pr[nmax], u, aux[nmax], rez;
int ciur[nmax], i, j;
void readdata()
{
FILE *fin=fopen(infile, "r");
fscanf(fin, "%ld", &n);
fclose(fin);
}
void ciur_eratestone()
{
for (i=2; i<=n; i++)
if (!ciur[i])
{
pr[++pr[0]]=i;
for (j=2; j*i<=n; j++)
ciur[i*j]=1;
}
}
long numar(long x)
{
aux[0]=0;
long temp=0, temp2=0;
for (i=1; i<=pr[0] && x!=1; i++)
if (!(x%pr[i]))
{
aux[++aux[0]]=pr[i];
while (!(x%pr[i])) x/=pr[i];
}
for (i=1; i<=aux[0]; i++)
{
temp=n/aux[i];
for (j=i-1; j>0; j--)
temp-=n/(aux[j]*aux[i]);
temp2+=temp;
}
return n-temp2;
}
void solve()
{
long k;
ciur_eratestone();
rez=n;
for (k=2; k<=n; k++)
rez+=numar(k);
}
void writedata()
{
FILE *fout=fopen(outfile, "w");
fprintf(fout, "%ld", rez);
fclose(fout);
}
int main()
{
readdata();
solve();
writedata();
return 0;
}