Advertisement
deced

Untitled

Oct 25th, 2020
145
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.49 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <vector>
  4. using namespace std;
  5. short int getN()
  6. {
  7.     bool isIncorrect;
  8.     short int ret = 0;
  9.     string inputLine;
  10.     do
  11.     {
  12.         isIncorrect = false;
  13.         cout << "Введите N" << endl;
  14.         getline(cin, inputLine);
  15.         try
  16.         {
  17.             ret = stoi(inputLine);
  18.         }
  19.         catch (...)
  20.         {
  21.             cout << "N должно быть числом" << endl;
  22.             isIncorrect = true;
  23.         }
  24.         if ((ret < 1) || (ret > 64) && !isIncorrect)
  25.         {
  26.             cout << "N должно быть целым числом большим нуля и меньшим 65" << endl;
  27.             isIncorrect = true;
  28.         }
  29.     } while (isIncorrect);
  30.     return ret;
  31. }
  32. void printArray(vector<long long int> arrayToPrint)
  33. {
  34.     cout << "Числа мерсена равны" << endl;
  35.     for (int i = 0; i < arrayToPrint.size(); i++)
  36.     {
  37.         cout << arrayToPrint[i] << endl;
  38.     }
  39. }
  40. vector<int> getPrimes(int n)
  41. {
  42.     vector<int> primes;
  43.     for (int i = 1; i < n; i++)
  44.         primes.push_back(i + 1);
  45.     for (int i = 1; i < primes.size(); i++)
  46.         if (primes[i] != 0)
  47.             for (int j = i + 1; j < primes.size(); j++)
  48.                 if (primes[j] % primes[i] == 0)
  49.                     primes.erase(primes.begin() + j);
  50.     return primes;
  51.  
  52. }
  53. void GetMersennePrimes()
  54. {
  55.     int n;
  56.     n = getN();
  57.     vector<int> primes = getPrimes(n);
  58.     vector<long long int> mersennePrimes;
  59.     for (int i = 0; i < primes.size(); i++)
  60.     {
  61.         mersennePrimes.push_back(pow(2, primes[i]) - 1);
  62.     }
  63.     printArray(mersennePrimes);
  64. }
  65. int main()
  66. {
  67.     setlocale(LC_ALL, "Russian");
  68.     GetMersennePrimes();
  69. }
  70.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement