Pagini recente » Cod sursa (job #716228) | Cod sursa (job #1653478) | Cod sursa (job #100406) | Cod sursa (job #1495696) | Cod sursa (job #29998)
Cod sursa(job #29998)
#include<stdio.h>
#include<math.h>
int nr[1000000],prim[100000];
int main(){
FILE*in=fopen("fractii.in","r");
FILE*out=fopen("fractii.out","w");
int n,i,a,j,s=0,pr;
fscanf(in,"%d",&n);
if(n==1){
fprintf(out,"1\n");
return 0;
}
if(n==2){
fprintf(out,"3\n");
return 0;
}
i=4;
while(i<=n){
nr[i]=1;
i=i+2;
}
for(i=3;i<=n;i=i+2){
pr=1;
if(nr[i]==0){
for(j=3;((j*j<=i)&&(pr));j=j+2){
if(i%j==0)
pr=0;
}
if(pr){
j=i+i;
while(j<=n){
nr[j]=1;
j=j+i;
}
}
}
}
prim[0]=2;
j=1;
for(i=3;i<=n/2;i=i+2){
if(nr[i]==0){
prim[j]=i;
j++;
}
}
i=0;
s=n;
if(n%2==0)
s=s+n/2;
if(n%2==1)
s=s+n/2+1;
float p;
for(i=3;i<=n;i++){
a=i;
j=0;
p=1;
while(prim[j]<=i){
if(i%prim[j]==0)
p=p*(((float)prim[j]-1)/prim[j]);
j++;
}
s=s+(ceil(n*p));
}
fprintf(out,"%d\n",s);
return 0;
}