Advertisement
Guest User

Untitled

a guest
Jul 20th, 2017
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.16 KB | None | 0 0
  1. #include <iostream>
  2. #include <Windows.h>
  3.  
  4. using namespace std;
  5.  
  6. bool primary_number(unsigned int number)
  7. {
  8.     for (unsigned int i = 2; i * i <= number; i++)
  9.     {
  10.         if (number % i == 0)
  11.             return false;
  12.     }
  13.     return true;
  14. }
  15.  
  16. void MersennePrimaryNumber(unsigned int n)
  17. {
  18.     int p, amount;
  19.     unsigned int MersennePrimaryNumber;
  20.     bool end = false;
  21.     amount = 0;
  22.     p = 2;
  23.     while (!end)
  24.     {
  25.         if (primary_number(p))
  26.         {
  27.             MersennePrimaryNumber = pow(2, p) - 1;
  28.             if (primary_number(MersennePrimaryNumber))
  29.             {
  30.                 if (MersennePrimaryNumber > n)
  31.                 {
  32.                     end = true;
  33.                 }
  34.                 else
  35.                 {
  36.                     cout << MersennePrimaryNumber << ", ";
  37.                     amount++;
  38.                 }
  39.             }
  40.         }
  41.         p++;
  42.     }
  43.     cout << endl << "Количество простых чисел Мерсенна: " << amount;
  44. }
  45.  
  46. void main()
  47. {
  48.     SetConsoleCP(1251);
  49.     SetConsoleOutputCP(1251);
  50.  
  51.     unsigned int n;
  52.     cout << "Введите число n: ";
  53.     while (!(cin >> n) || (cin.peek() != '\n') || (n <= 0))
  54.     {
  55.         cin.clear();
  56.         cin.sync();
  57.         cout << "Некорректный ввод числа. Повторите ввод числа: ";
  58.     }
  59.    
  60.     MersennePrimaryNumber(n);
  61.  
  62.     cin.sync();
  63.     cin.get();
  64. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement