Pagini recente » Cod sursa (job #1905564) | Cod sursa (job #1638319) | Cod sursa (job #140890) | Cod sursa (job #442882) | Cod sursa (job #80195)
Cod sursa(job #80195)
#include <stdio.h>
int a[1000001],n,nr,p[1000001],i,j,k,x,suma,s,r,q;
void prim(int n)
{int i,j;
for (i=1;((i*i)<<1)+(i<<1)<=n;i+=1)
{if ((p[i>>3]&(1<<(i&7)))==0)
{for (j=((i*i)<<1)+(i<<1);(j<<1)+1<=n;j+=(i<<1)+1)
{p[j>>3]|=(1<<(j&7));
}
}
}
}
int main()
{FILE *fin,*fout;
fin=fopen("fractii.in","r");
fscanf(fin,"%d",&n);
fclose(fin);
prim(n);
nr=n;
if (n>1) nr=nr+n-n/2;
for (i=3;i<=n;i++)
{x=(i-1)/2;
if ((i%2==1)&&((p[x>>3]&(1<<(x&7)))==0)) nr=nr+n-n/i;
else {for (j=1;j<=n;j++) a[j]=0;
if (i%2==0) for (j=2;j<=n;j+=2) a[j]=1;
for (j=3;j<=i/2;j=j+2)
{x=(j-1)/2;
if (((p[x>>3]&(1<<(x&7)))==0)&&(i%j==0))
for (k=j;k<=n;k+=j) a[k]=1;
}
suma=0;
for (j=1;j<=n;j++) suma=suma+a[j];
nr=nr+n-suma;
}
}
fout=fopen("fractii.out","w");
fprintf(fout,"%d",nr);
fclose(fout);
return 0;
}