Advertisement
Guest User

Untitled

a guest
Nov 5th, 2022
49
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.51 KB | Source Code | 0 0
  1. #include <iostream>
  2. #include <array>
  3. #include <vector>
  4. #include <math.h>
  5. #define PRIMES_SIZE 50
  6.  
  7. std::vector<long> erat()
  8. {
  9.     std::array<bool,PRIMES_SIZE> nums;
  10.     nums.fill(true);
  11.     for(long i(2); i <= ceil(sqrt(PRIMES_SIZE)); ++i)
  12.     {
  13.         if(nums[i-2])
  14.         {
  15.             for(long j(i*2); j-2 < PRIMES_SIZE; j += i)
  16.                 nums[j-2] = false;
  17.         }
  18.     }
  19.     std::vector<long> res;
  20.     for(long i(0); i < PRIMES_SIZE; ++i)
  21.     {
  22.         if(nums[i])
  23.             res.push_back(i+2);
  24.     }
  25.  
  26.     return res;
  27. }
  28.  
  29. std::vector<long long> primors(const std::vector<long>& primes)
  30. {
  31.     long long curr = 1;
  32.     std::vector<long long> res;
  33.     for(auto p : primes)
  34.     {
  35.         curr *= p;
  36.         res.push_back(curr);
  37.     }
  38.  
  39.     return res;
  40. }
  41.  
  42. int main()
  43. {
  44.     std::vector<long> primes(erat());
  45.     std::vector<long long> primor(primors(primes));
  46.     long rem = std::pow(*primes.rbegin(),2);
  47.     double row_l = rem;
  48.     for(int i(0); i < primes.size(); ++i)
  49.     {
  50.         //
  51.         double inter_num;
  52.         if(i == 0)
  53.             inter_num = row_l;
  54.         else
  55.             inter_num = ceil(row_l / primor[i-1]);
  56.         double rem_p_inter = (double)rem/inter_num;
  57.         if(i > 2)
  58.             rem_p_inter = floor(rem_p_inter);
  59.         else
  60.             rem_p_inter = rem_p_inter;
  61.         rem = floor(std::max(0.0,rem_p_inter-2)*2/primes[i]*inter_num) + floor(rem_p_inter*std::max(1L,primes[i]-2)/primes[i]*inter_num);
  62.         std::cout << rem << '\n';
  63.     }
  64. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement