Pagini recente » Cod sursa (job #1863424) | Cod sursa (job #2372673) | Cod sursa (job #497818) | Cod sursa (job #2409167) | Cod sursa (job #13335)
Cod sursa(job #13335)
#include<stdio.h>
FILE *f=fopen("fractii.in", "r"), *g=fopen("fractii.out", "w");
long n;
int prim(long i)
{
long d=2;
while(d*d<=i)
{
if(i%d==0)
return 0;
d++;
}
return 1;
}
long cmmmc(long a, long b)
{
long div[10000];
long d=2, t, aux, k=1, max, i;
aux=a;
if(a>b)
max=a;
else
max=b;
for(i=1; i<=max; i++)
div[i]=1;
while(aux!=1)
{
t=1;
while(aux%d==0)
{
t=t*d;
aux=aux/d;
}
if(t/div[d]!=0 && t/div[d]!=1)
{
k=k*(t/div[d]);
div[d]=t;
}
d++;
}
aux=b;
d=2;
while(aux!=1)
{
t=1;
while(aux%d==0)
{
t=t*d;
aux=aux/d;
}
if(t/div[d]!=0 && t/div[d]!=1)
{
k=k*(t/div[d]);
div[d]=t;
}
d++;
}
return k;
}
void generare()
{
long i, d, aux, q=1, t, j;
long s, c[10000];
s=n*n-n+1;
for(i=2; i<=n; i++)
if(prim(i)==1)
{
c[q++]=i;
d=1;
aux=i;
while(aux<=n)
{
d++;
aux=i*d;
}
s=s-(d-1)*(d-2);
}
for(i=1; i<q; i++)
for(j=i+1; j<q; j++)
{
t=cmmmc(c[i], c[j]);
d=1;
aux=t;
while(aux<=n)
{
d++;
aux=t*d;
}
s=s+(d-1)*(d-2);
}
fprintf(g, "%ld", s);
}
int main()
{
fscanf(f, "%ld", &n);
generare();
fclose(f);
fclose(g);
return 0;
}