Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <fstream>
- #include <iostream>
- using namespace std;
- bool isPrimeNumber(int n) {
- n = abs(n);
- if (n < 2) {
- return false;
- }
- if (n == 2) {
- return true;
- }
- if ((n & 1) == 0) { // Проверяем, является ли число четным
- return false;
- }
- for (int i = 3; i <= sqrt(n); i += 2) {
- if (n % i == 0) {
- return false;
- }
- }
- return true;
- }
- void Print(int n, int* Array, int mask) {
- for (int i = 0; i < n; ++i) {
- if (mask & (1 << i)) {
- cout << Array[i] << " ";
- }
- }
- cout << endl;
- }
- bool checkmusk(int n, int* Array, int mask) {
- for (int i = 0; i < n; ++i) {
- if (mask & (1 << i)) {
- if (!isPrimeNumber(Array[i])) return false;
- }
- }
- return true;
- }
- int main()
- {
- ifstream file("input.txt");
- int n = 0;
- file >> n;
- int k;
- file >> k;
- int* Array = new int[n];
- for (int i = 0; i < n; ++i) {
- file >> Array[i];
- }
- unsigned int mask = (1<<k)-1;
- while (mask < (1 << n)) {
- if (checkmusk(n, Array, mask)) Print(n, Array, mask);
- int i = 0, count = 0;
- for (; !(mask & (1 << i)); i++);
- for (; mask & (1 << i); i++) { count++; mask &= ~(1 << i); }
- mask |= (1 << i++);
- count--;
- mask |= (1 << count) - 1;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement