Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- struct elem{int inf; elem*adr;};
- typedef elem*ref;
- ref e;
- void creare(ref &prim,ref &ultim)
- {
- ref e;
- int i,x,n;
- prim=NULL;
- scanf("%d",&n);
- for(i=1;i<=n;i++)
- {
- scanf("%d",&x);
- e=new elem;
- e->inf=x;
- e->adr=NULL;
- if(prim==NULL)
- prim=ultim=e;
- else {ultim->adr=e;
- ultim=e;}
- }
- }
- void afisare(ref prim)
- {
- ref e;
- e=prim;
- while(e!=NULL)
- {
- printf("%d ",e->inf);
- e=e->adr;
- printf("\n");
- }
- }
- void stergere(ref &prim, ref &ultim,ref e)
- {
- ref pen,g,f;
- if(e==prim)
- {
- prim=prim->adr;
- delete e;
- }
- else
- if(e==ultim)
- {
- pen=prim;
- while(pen->adr!=ultim)
- pen=pen->adr;
- pen->adr=NULL;
- ultim=pen;
- delete e;
- }
- else {
- f=prim;
- g=e->adr;
- while(f->adr!=e)
- f=f->adr;
- f->adr=g;
- delete e;
- }
- }
- void adaugaredupa(ref &ultim,ref a,int x)
- {
- ref e,f;
- e=new elem;
- e->inf=x;
- if(a==ultim)
- {
- e->adr=NULL;
- ultim->adr=e;
- ultim=e;
- }
- else {f=a->adr;
- a->adr=e;
- e->adr=f;}
- }
- int prime(int x)
- {int cod=1,i;
- if(x==0 || x==1 || (x%2==0 && x!=2))
- cod=0;
- for(i=1;i*i<=x;i++)
- if(x%i==0)
- cod=0;
- return cod;
- }
- int nrdiv(int x)
- {int nr=0,i;
- for(i=1;i*i<=x;i++)
- if(x%i==0)
- nr++;
- }
- int main()
- {
- ref e,f,prim,ultim;
- creare(prim,ultim);
- afisare(prim);
- e=prim;
- while(e!=NULL)
- {
- f=e->adr;
- if(prime(e->inf)==1) stergere(prim,ultim,e);
- e=f;
- }
- afisare(prim);
- e=prim;
- while(e!=NULL)
- {
- f=e->adr;
- if(e->inf%3==0)
- adaugaredupa(ultim,e,nrdiv(e->inf));
- e=f;
- }
- afisare(prim);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement