#include #include #include #include #include #include using namespace std; vector result; int main() { int numbers[100]; int max_threads = omp_get_max_threads(); // определяем максимальное количество потоков printf("Максимальное количество потоков: %d\n", max_threads); // проверяем количество возможных потоков if (max_threads < 4) omp_set_num_threads(max_threads); // если количество меньше 4, то устанавливаем то число потоков, которое возможно else omp_set_num_threads(4); srand(time(NULL)); for (int i = 0; i < 100; i++) numbers[i] = rand() % 1000 + 1; #pragma omp parallel for schedule(static) private(i) shared(numbers) for (int i = 0; i < 100; i++) { int temp = (int)sqrt(numbers[i]); if (pow(temp, 2) == numbers[i]) { printf("Поток %d выполняет операцию\n", omp_get_thread_num()); result.push_back(numbers[i]); } } printf("Квадраты любого натурального числа:\n"); for(int i = 0; i < result.size(); i++) printf("%d\n", result[i]); return 0; }