a53

prime003

a53
Jan 4th, 2018
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.47 KB | None | 0 0
  1. #include <fstream>
  2. #include <bitset>
  3. #define N 10000001
  4. using namespace std;
  5. bitset <N> prim;
  6.  
  7. void Ciur()
  8. {
  9. prim[0]=prim[1]=1; /// Ciurul lui Eratostene
  10. for(int i=2;i*i<N;++i)
  11. if(prim[i]==0)
  12. for(int j=2;i*j<N;++j)
  13. prim[i*j]=1;
  14. }
  15.  
  16. /// Folosind Ciurul lui Eratostene se afla numerele prime de la 1 la 10.000.000, afland in acelasi timp si secventele de numere neprime
  17. /// (care sunt cuprinse intre doua numere prime consecutive). La fiecare pozitie din sirul numerelor naturale se retine pozitia de inceput
  18. /// a secventei si lungimea secventei de numere neprime.
  19.  
  20. int main()
  21. {
  22. ifstream f("prim997.in");
  23. ofstream g("prim997.out");
  24. int n;
  25. f>>n;
  26. int a[n];
  27. for(int i=0;i<n;++i)
  28. f>>a[i];
  29. f.close();
  30. Ciur();
  31. int j,L,Lmax,primul,primulMax;
  32. bool ok;
  33. for(int i=0;i<n;++i)
  34. {
  35. j=1;
  36. while(j<=a[i])
  37. {
  38. L=0;
  39. Lmax=0;
  40. ok=true;
  41. for(int j=1;j<=a[i];++j)
  42. if(prim[j])
  43. {
  44. ++L;
  45. if(ok)
  46. primul=j,ok=false;
  47. }
  48. else
  49. {
  50. if(L>Lmax)
  51. Lmax=L,primulMax=primul;
  52. L=0;
  53. ok=true;
  54. }
  55. ++j;
  56. }
  57. g<<primulMax<<' '<<Lmax<<'\n';
  58. }
  59. return 0;
  60. }
Add Comment
Please, Sign In to add comment