Advertisement
a53

PrimXXL

a53
Jan 19th, 2018
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.16 KB | None | 0 0
  1. #include <fstream>
  2. using namespace std;
  3. int prim[32000],p[3500],exp[3500];
  4. bool ok;
  5.  
  6. void Ciur(int K) /// numerele prime pana la 32000 si exponentii lor in k!
  7. {
  8. prim[2]=0;
  9. int j,k=0,produs;
  10. for(int i=2;i<=32000;++i)
  11. if(prim[i]==0)
  12. {
  13. ++k;
  14. p[k]=i;
  15. exp[k]=0;
  16. produs=i;
  17. while(produs<=K)
  18. exp[k]+=K/produs,produs=produs*i;
  19. j=i+i;
  20. while(j<=32000)
  21. prim[j]=1,j+=i;
  22. }
  23. }
  24.  
  25. int main()
  26. {
  27. ifstream f("primxxl.in");
  28. int n,k;
  29. f>>n>>k;
  30. Ciur(k);
  31. int x,nr=0,j,exp_x;
  32. while(n--)
  33. {
  34. f>>x;
  35. if(x<=k)
  36. ++nr;
  37. else
  38. {
  39. j=1;
  40. ok=true;
  41. while((p[j]*p[j]<=x)&&ok)
  42. {
  43. exp_x=0;
  44. while(x%p[j]==0)
  45. ++exp_x,x=x/p[j];
  46. if(exp_x>exp[j])
  47. ok=false;
  48. ++j;
  49. }
  50. if(x>k)
  51. ok=false;
  52. if(ok)
  53. ++nr;
  54. }
  55. }
  56. f.close();
  57. ofstream g("primxxl.out");
  58. g<<nr;
  59. g.close();
  60. return 0;
  61. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement