Pagini recente » Cod sursa (job #1470170) | Cod sursa (job #2980906) | Cod sursa (job #1609492) | Cod sursa (job #2148063) | Cod sursa (job #16595)
Cod sursa(job #16595)
#include<stdio.h>
FILE *f=fopen("fractii.in", "r"), *g=fopen("fractii.out", "w");
struct nod
{
long info;
nod *urm;
};
nod *prim, *ultim;
long n;
int nr_prim(long k)
{
long d;
d=2;
while(d*d<=k)
{
if(k%d==0)
return 0;
d++;
}
return 1;
}
void adaugare(long k)
{
nod *p;
p=new nod;
p->info=k;
p->urm=NULL;
if(prim==NULL)
prim=ultim=p;
else
{
ultim->urm=p;
ultim=p;
}
}
int main()
{
long i, j, t;
float q, p, s, rez;
int sem;
nod *r;
fscanf(f, "%ld", &n);
fclose(f);
s=0;
for(i=2; i<=n; i++)
if(nr_prim(i)==1)
adaugare(i);
s=0;
for(i=2; i<=n; i++)
{
sem=1;
p=i;
r=prim;
while(r && sem)
{
t=r->info;
if(t>i)
sem=0;
else
{
if(i%t==0)
{
q=1-1.0/t;
p=p*q;
}
}
r=r->urm;
}
s=s+2*p;
if(r->info==i+1)
{
s=s+2*i;
i=i+1;
}
}
rez=s+1;
fprintf(g, "%.0f", rez);
fclose(f);
return 0;
}