Pagini recente » Cod sursa (job #2987405) | Cod sursa (job #364934) | Cod sursa (job #3229996) | Cod sursa (job #81793) | Cod sursa (job #12324)
Cod sursa(job #12324)
#include <stdio.h>
#include <math.h>
int vec[1000],n,l=0;
int prim(int x)
{
if (x==2) return 1;
if (x%2==0) return 0;
int i,rad=sqrt(x);
for (i=3;i<=rad;i+=2)
if (x%i==0) return 0;
return 1;
}
void vector()
{
int i,rad;
rad=sqrt(n);
for (i=2;i<=rad;i++)
if (prim(i)) {
vec[l]=i;
l++;
}
}
int primmare(int x)
{
int i;
for (i=0;i<l;i++)
{
if (x==vec[i]) return 1;
if (x%vec[i]==0) return 0;
}
return 1;
}
int totent(int x)
{
int i,fi;
fi=x;
for (i=2;i<=x/2;i++)
if (x%i==0){
if (primmare(i)) fi=fi*(i-1)/i;
}
if (fi==x) return (x-1);
else return fi;
}
int main()
{
unsigned long long numar;
int i;
FILE *pf;
pf=fopen("fractii.in","r");
fscanf(pf,"%d",&n);
fclose(pf);
vector();
numar=1;
for (i=2;i<=n;i++){
numar+=(unsigned long long)(2*totent(i));
}
pf=fopen("fractii.out","w");
fprintf(pf,"%llu",numar);
fclose(pf);
return 0;
}