Pagini recente » Cod sursa (job #1007169) | Cod sursa (job #2109363) | Cod sursa (job #924547) | Cod sursa (job #539705) | Cod sursa (job #51584)
Cod sursa(job #51584)
#include<stdio.h>
#include<math.h>
#define Nmax 1000000
int N;
long long S=0;
int prim[Nmax];
void citire ()
{
FILE *in = fopen ("fractii.in", "rt");
fscanf (in, "%d", &N);
fclose(in);
}
void preproc()
{
for(int i=2;i<=N;i++)
{
if(!prim[i])
{
for(int j=2;j*i<=N;j++)
prim[j*i]=1;
}
}
}
int cmmdc(int x, int y)
{
while(x!=y)
{
if(x>y)
x-=y;
else
y-=x;
}
return x;
}
void calcul ()
{
preproc();
S+=N-1;
for(int i=2;i<=N;i++)
{
int k=N-i;
int p=1;
if(!prim[i])
k-=(N-i)/i;
else
for(int j=i+1;j<=N;j++)
{
if(cmmdc(i,j)!=1)
k--;
}
S+=k;
}
S=S*2;
S++;
}
void afisare ()
{
FILE *out = fopen ("fractii.out", "wt");
fprintf(out, "%lld", S);
fclose(out);
}
int main ()
{
citire();
calcul();
afisare ();
return 0;
}