Advertisement
Mikhail-Podbolotov

Untitled

May 30th, 2024
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.40 KB | None | 0 0
  1. #include <fstream>
  2. #include <iostream>
  3. using namespace std;
  4.  
  5. bool isPrimeNumber(int n) {
  6.     n = abs(n);
  7.     if (n < 2) {
  8.         return false;
  9.     }
  10.     if (n == 2) {
  11.         return true;
  12.     }
  13.     if ((n & 1) == 0) { // Проверяем, является ли число четным
  14.         return false;
  15.     }
  16.     for (int i = 3; i <= sqrt(n); i += 2) {
  17.         if (n % i == 0) {
  18.             return false;
  19.         }
  20.     }
  21.     return true;
  22. }
  23. void Print(int n, int* Array, int mask) {
  24.     for (int i = 0; i < n; ++i) {
  25.         if (mask & (1 << i)) {
  26.             cout << Array[i] << " ";
  27.         }
  28.     }
  29.     cout << endl;
  30. }
  31. bool checkmusk(int n, int* Array, int mask) {
  32.     for (int i = 0; i < n; ++i) {
  33.         if (mask & (1 << i)) {
  34.             if (!isPrimeNumber(Array[i])) return false;
  35.         }
  36.     }
  37.     return true;
  38. }
  39. int main()
  40. {
  41.     ifstream file("input.txt");
  42.     int n = 0;
  43.     file >> n;
  44.     int k;
  45.     file >> k;
  46.     int* Array = new int[n];
  47.     for (int i = 0; i < n; ++i) {
  48.         file >> Array[i];
  49.     }
  50.     unsigned int mask = (1<<k)-1;
  51.     while (mask < (1 << n)) {
  52.         if (checkmusk(n, Array, mask)) Print(n, Array, mask);
  53.         int i = 0, count = 0;
  54.         for (; !(mask & (1 << i)); i++);
  55.         for (; mask & (1 << i); i++) { count++; mask &= ~(1 << i); }
  56.         mask |= (1 << i++);
  57.         count--;
  58.         mask |= (1 << count) - 1;
  59.     }
  60. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement