Pagini recente » Cod sursa (job #238453) | Cod sursa (job #3172970) | Cod sursa (job #24959) | Cod sursa (job #1428304) | Cod sursa (job #16214)
Cod sursa(job #16214)
#include <math.h>
#include <iostream.h>
#include <fstream.h>
typedef struct nod
{unsigned long n;
nod *urm;
}*PNOD;
PNOD prim=NULL,ultim=NULL;
void adauga(unsigned long n)
{PNOD q=new nod;
if(!prim)
{prim=q;}
else
{ultim->urm=q;}
q->urm=NULL;
q->n=n;
ultim=q;
}
void calculeazaNumerePrime(long n)
{PNOD p;
long i;
int sw;
adauga(2);
for (i=3;i<n;i+=2)
{sw=0;
for (p=prim->urm;p!=NULL&&sqrt(i)>=p->n;p=p->urm)
{if(i%p->n==0)
{sw=1;
break;
}
}
if(sw==0)
{adauga(i);}
}
}
int main()
{long n,i,j,k=0,sw;
ifstream f("prim.in");
f>>n;
f.close();
PNOD p;
calculeazaNumerePrime(n/2+1);
for (i=1;i<=n;i++)
{for (j=1;j<=n;j++)
{p=prim;
while(p)
{if((i%p->n==0&&j%p->n==0)||(i==j&&(i!=1||j!=1)))
{k++;
//cout <<i<<" "<<j<<endl;getch();
break;
}
p=p->urm;
}
}
}
ofstream fout("prim.out");
fout<<n*n-k;
fout.close();
return 0;
}