Pagini recente » Cod sursa (job #508016) | Cod sursa (job #3255086) | Cod sursa (job #2607985) | Cod sursa (job #2657467) | Cod sursa (job #137167)
Cod sursa(job #137167)
#include <stdio.h>
long pc[1000000];
long prim(long a)
{
long i;
if(a<=1)return 0;
if(a==2)return 1;
if(a%2==0)return 0;
for(i=3;i*i<=a;i+=2)
if(a%i==0)return 0;
}
long cmmdc(long a,long b)
{
if(b==0)return a;
return cmmdc(b,a%b);
}
long shi(long n)
{
long flag=1,e=0,p,nb=n;
if(prim(n)){pc[n]=n-1;return(n-1);}
if(pc[n]==0)
{
long d=2;
if(n%2!=0)
{
d=3;
while((d*d<=n)&&(flag))
{
if(n%d==0)flag=0;
else{d+=2;}
}
}
while(n%d==0)
{
e++;
n/=d;
}
p=(d-1);
while(e-1)
{
e--;
p*=d;
}
pc[nb]=p*shi(n);
return(pc[nb]);
}
return(pc[nb]);
}
int main()
{
long i=0;
long nn=0;
long long s=0;
FILE *f;
pc[1]=1;
f=fopen("fractii.in","r");
fscanf(f,"%d",&nn);
fclose(f);
nn++;
for(i=2;i<nn;i++)
s+=shi(i);
s*=2;
s++;
FILE *g;
g=fopen("fractii.out","w");
fprintf(g,"%lld\n",s);
fclose(g);
return 0;
}