Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include "string.h"
- #include "array.h"
- using namespace std;
- // Простейшая проверка простоты
- bool isPrime(long long x)
- {
- if (x < 2) return false;
- for (long long i = 2; i*i <= x; i++)
- {
- if (x % i == 0) return false;
- }
- return true;
- }
- // Генерация первых N простых чисел
- Array<long long> generatePrimes(int N)
- {
- Array<long long> arr;
- long long num = 2;
- while (arr.size() < N)
- {
- if (isPrime(num)) arr.append(num);
- num++;
- }
- return arr;
- }
- long long mersenneNumber(long long p)
- {
- // 2^p - 1
- long long result = 1;
- for (int i = 0; i < p; i++)
- {
- result *= 2;
- }
- return result - 1;
- }
- int main()
- {
- cout << "Сколько чисел Мерсена вывести? ";
- int N;
- cin >> N;
- // Получаем первые N простых
- Array<long long> primes = generatePrimes(N);
- // Для вывода используем String
- for (int i = 0; i < N; i++)
- {
- long long p = primes[i];
- long long M = mersenneNumber(p);
- String msg = "M(";
- msg = msg + to_string(p).c_str();
- msg = msg + ") = ";
- msg = msg + to_string(M).c_str();
- if (isPrime(M))
- msg = msg + " (простое)";
- else
- msg = msg + " (непростое)";
- cout << msg << endl;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement