Pagini recente » Cod sursa (job #1706924) | Cod sursa (job #1034095) | Cod sursa (job #2967435) | Cod sursa (job #3124379) | Cod sursa (job #2426041)
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n,s,i,j,np=0,aux,prod,fi=0;
char *v,*p;
FILE *f,*g;
f=fopen("fractii.in","r");
g=fopen("fractii.out","w");
fscanf(f,"%d",&n);
v=(char*)malloc(n+1);
for(i=2;i<n;i++)
{
v[i]=1;
}
for(i=2;i*i<=n;i++)
{
if(v[i])
{
for(j=i;j<=n/i;j++)
{
v[i*j]=0;
}
}
}
for(i=2;i<=n;i++)
{
if(v[i])
{
np++;
}
}
p=(int*)malloc(np*sizeof(int));
j=0;
for(i=2;i<=n;i++)
{
if(v[i])
{
p[j]=i;
j++;
}
}
free(v);
for(i=2;i<=n;i++)
{
prod=1;
aux=i;
for(j=0;j<np && p[j]<=i && aux>1;j++)
{
if(aux%p[j]==0)
{
prod=prod*(p[j]-1);
aux=aux/p[j];
}
while(aux%p[j]==0)
{
prod=prod*p[j];
aux=aux/p[j];
}
}
fi=fi+prod;
}
fi=(fi<<1)+1;
printf("%d",fi);
free(p);
fclose(f);
fclose(g);
return 0;
}