Advertisement
Guest User

info 3

a guest
Apr 26th, 2018
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.95 KB | None | 0 0
  1. #include<stdio.h>
  2. struct elem{int inf; elem*adr;};
  3. typedef elem*ref;
  4. ref e;
  5.  
  6. void creare(ref &prim,ref &ultim)
  7. {
  8. ref e;
  9. int i,x,n;
  10. prim=NULL;
  11. scanf("%d",&n);
  12. for(i=1;i<=n;i++)
  13. {
  14. scanf("%d",&x);
  15. e=new elem;
  16. e->inf=x;
  17. e->adr=NULL;
  18. if(prim==NULL)
  19. prim=ultim=e;
  20.  
  21. else {ultim->adr=e;
  22. ultim=e;}
  23. }
  24. }
  25. void afisare(ref prim)
  26. {
  27. ref e;
  28. e=prim;
  29. while(e!=NULL)
  30. {
  31. printf("%d ",e->inf);
  32. e=e->adr;
  33. printf("\n");
  34.  
  35. }
  36.  
  37. }
  38. void stergere(ref &prim, ref &ultim,ref e)
  39. {
  40. ref pen,g,f;
  41. if(e==prim)
  42. {
  43. prim=prim->adr;
  44. delete e;
  45. }
  46. else
  47. if(e==ultim)
  48. {
  49. pen=prim;
  50. while(pen->adr!=ultim)
  51. pen=pen->adr;
  52. pen->adr=NULL;
  53. ultim=pen;
  54. delete e;
  55. }
  56. else {
  57. f=prim;
  58. g=e->adr;
  59. while(f->adr!=e)
  60. f=f->adr;
  61. f->adr=g;
  62. delete e;
  63. }
  64. }
  65.  
  66. void adaugaredupa(ref &ultim,ref a,int x)
  67. {
  68. ref e,f;
  69. e=new elem;
  70. e->inf=x;
  71. if(a==ultim)
  72. {
  73. e->adr=NULL;
  74. ultim->adr=e;
  75. ultim=e;
  76. }
  77. else {f=a->adr;
  78. a->adr=e;
  79. e->adr=f;}
  80. }
  81. int prime(int x)
  82. {int cod=1,i;
  83. if(x==0 || x==1 || (x%2==0 && x!=2))
  84. cod=0;
  85. for(i=1;i*i<=x;i++)
  86. if(x%i==0)
  87. cod=0;
  88. return cod;
  89. }
  90. int nrdiv(int x)
  91. {int nr=0,i;
  92. for(i=1;i*i<=x;i++)
  93. if(x%i==0)
  94. nr++;
  95. }
  96.  
  97. int main()
  98. {
  99. ref e,f,prim,ultim;
  100. creare(prim,ultim);
  101. afisare(prim);
  102. e=prim;
  103. while(e!=NULL)
  104. {
  105. f=e->adr;
  106. if(prime(e->inf)==1) stergere(prim,ultim,e);
  107. e=f;
  108. }
  109. afisare(prim);
  110. e=prim;
  111. while(e!=NULL)
  112. {
  113. f=e->adr;
  114. if(e->inf%3==0)
  115. adaugaredupa(ultim,e,nrdiv(e->inf));
  116. e=f;
  117. }
  118. afisare(prim);
  119. return 0;
  120. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement