Pagini recente » Borderou de evaluare (job #804936) | Borderou de evaluare (job #2056581) | Cod sursa (job #104683) | Cod sursa (job #1965758) | Cod sursa (job #917272)
Cod sursa(job #917272)
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#define S 6
#define U 1
#define MAXSIZE 5000001
bool a[MAXSIZE];
long b[MAXSIZE],c[MAXSIZE];
int main()
{long long i,j,j2,i22,i11,l;
long m=2,n,p,ok,m2;
freopen("fractii.in","r",stdin);
freopen("fractii.out","w",stdout);
scanf("%li",&m2);
//m2=10000;
n=m2*15;
b[1]=2;
b[2]=3;
p=n/7;
a[4]=1;
a[6]=1;
for(i=4;i<=n;i+=2)
a[i]=1;
for(i=6;i<=n;i+=3)
a[i]=1;
for(i= S ; i <=p ; i += S)
{
if(! a [ i-1 ])
{
i11 = (i-1)*S;
for( j =i11+i-1, j2 = (i-1) * (i-1) ; j<= n; j += i11, j2 += i11 )
{
a[j]=1;
if( j2 <= n )
{
a[j2]=1;
}}
}
if(! a [ i+1])
{
i22 = (i+1)*S;
for(j =(i+1)*(i+1) ; j <= n ; j += i22)
{
a[j]=1;
}}
}
for(i=S;i<n;i+=S)
{
if(!a[i-1])
b[++m]=i-1;
if(!a[i+1])
b[++m]=i+1;
// m+=!a[i+1]+!a[i-1];
}
n=2*m2-1;
for(j=2;j<=m2;j++)
c[j]=m2-1;
for(i=2;i<=m2;i++)
{
if(a[i]==false)
{for(j=i;j<=m2;j+=i)
{c[j]--;
if(i!=j)
c[i]--;
}}
else
{ok=1;
for(l=1;l<=i;l++)
if(i%b[l]==0)
{
if(ok)
{c[i]--;ok=0;}
for(j=i+b[l];j<=m2;j+=b[l])
{c[j]--;
if(b[l]!=j)
c[i]--;
}}
}}
for(i=2;i<=m;i++)
n+=c[i];
printf("%li",n);
return 0;
}