Cod sursa(job #187674)
| Utilizator | Data | 5 mai 2008 01:18:31 | |
|---|---|---|---|
| Problema | Fractii | Scor | 30 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 1.15 kb |
#include <stdio.h>
int n, nr;
void cit()
{
FILE *f=fopen("fractii.in", "r");
fscanf(f, "%d", &n);
fclose(f);
}
int prim(int nr1)
{
int i;
for (i=2; i<nr1/2; i++)
if (!(nr1%i)) return 0;
return 1;
}
int d(int n)
{
int i, put, e=1, t, j;
for (i=2; i<=n; i++)
{
put=0;
if (!(n%i))
{
if (prim(i))
while (!(n%i))
{
put++;
n/=i;
}
t=1;
for (j=0; j<put-1; j++) t*=i;
e*=t*i-t;
}
}
return e;
}
void fct()
{
int i;
nr=1;
for (i=2; i<=n; i++)
{
nr+=2*d(i);
}
}
void tip()
{
FILE *f=fopen("fractii.out", "w");
fprintf(f, "%d\n", nr);
fclose(f);
}
int main()
{
cit();
fct();
tip();
return 0;
}
