Advertisement
Solingen

z5.3.cpp

Dec 21st, 2024
17
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.h"
  3. #include "array.h"
  4. using namespace std;
  5.  
  6. // Простейшая проверка простоты
  7. bool isPrime(long long x)
  8. {
  9.     if (x < 2) return false;
  10.     for (long long i = 2; i*i <= x; i++)
  11.     {
  12.         if (x % i == 0) return false;
  13.     }
  14.     return true;
  15. }
  16.  
  17. // Генерация первых N простых чисел
  18. Array<long long> generatePrimes(int N)
  19. {
  20.     Array<long long> arr;
  21.     long long num = 2;
  22.     while (arr.size() < N)
  23.     {
  24.         if (isPrime(num)) arr.append(num);
  25.         num++;
  26.     }
  27.     return arr;
  28. }
  29.  
  30. long long mersenneNumber(long long p)
  31. {
  32.     // 2^p - 1
  33.     long long result = 1;
  34.     for (int i = 0; i < p; i++)
  35.     {
  36.         result *= 2;
  37.     }
  38.     return result - 1;
  39. }
  40.  
  41. int main()
  42. {
  43.     cout << "Сколько чисел Мерсена вывести? ";
  44.     int N;
  45.     cin >> N;
  46.  
  47.     // Получаем первые N простых
  48.     Array<long long> primes = generatePrimes(N);
  49.  
  50.     // Для вывода используем String
  51.     for (int i = 0; i < N; i++)
  52.     {
  53.         long long p = primes[i];
  54.         long long M = mersenneNumber(p);
  55.  
  56.         String msg = "M(";
  57.         msg = msg + to_string(p).c_str();
  58.         msg = msg + ") = ";
  59.         msg = msg + to_string(M).c_str();
  60.  
  61.         if (isPrime(M))
  62.             msg = msg + " (простое)";
  63.         else
  64.             msg = msg + " (непростое)";
  65.  
  66.         cout << msg << endl;
  67.     }
  68.  
  69.     return 0;
  70. }
  71.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement