Лабораторна робота №1. Багатопоточне та асинхронне програмування на С++

Ознайомтесь з особливостями створення багатопоточних та асинхронних програм на С++ за посиланням
https://www.youtube.com/live/FvkbzSyJIQ8?si=JteU35AIw2jYsvWp
https://www.youtube.com/live/zd6NllQWn38?si=61xaP9Jf5AlsSj98

На кожне з 4-х завдань розробити 2 програми, які моделюють багатопоточність та асинхроність. Для цього використовуються класи std::thread та future.

1) Дано масив цілих чисел на N елементів. Обчислити кількість лише простих його елементів.

    Вхідні данні: У вхідному потоці першому рядку дано єдине натуральне число N (N <= 100000). 
    У другому рядку через пропуск перераховані значення елементів масиву Ai (0 <= Ai <= 106).
    Приклад вхідного файлу (input.txt):
    9
  1 2 3 4 5 6 7 8 9
  Вихідні данні: У вихідний потік вивести єдине ціле число.
    Приклад вихідного файлу (output.txt):
    
2)
Вичисліть суму перших простих елементів натурального ряда, які не перевищують n.
  Вхідні данні: Во вхідному потоці дано єдине натуральне число n (n < 1.5* 106)
  Приклад вхідного файлу:
  5
  Вихідні данні:
  В выходной поток вывести единстуенное натуральное число.
  Приклад вихідного файлу:
  10        

3) Даний цілий масив на N елементів. Обчислити суму лише його простих елементів. Написати багатопотоковий варіант розв'язання цієї задачі.

Вхідні дані:

У вхідному потоці першому рядку дано єдине натуральне число N (N <= 100000).

У другому рядку через пропуск перераховані значення елементів масиву Ai (|Ai| <= 106).

Приклад вхідного файлу (input.txt):

9

1 2 3 4 5 6 7 8 9

 Вихідні дані:

У вихідний потік вивести єдине ціле число. Результат може перевищити 2*109.

Приклад вихідного файлу (output.txt):

17

4) Визначити властивості перших n натуральних чисел. Для кожного з чисел визначити число його натуральних дільників і чи є дане число простим.

Програма має бути реалізована у вигляді багатопотокового додатка.

Для перевірки правильності роботи багатопоточного режиму роботи програми можна порівняти системний та реальний час роботи програми. Якщо реальний час приблизно півтора-два рази менший від системного, то програма дійсно працює в багатопотоковому режимі.

Вхідні дані:

У вхідному потоці встановлено єдине натуральне число n (n <= 250 000).

Приклад вхідного файлу (input.txt):

6

 Вихідні дані:

У вихідний потік вивести таблицю у форматі (у порядку зростання значення натурального числа):

<натуральне число> <кількість дільників> <проста>

Якщо число просте, вивести одиницю, інакше нуль.

Приклад вихідного файлу (output.txt):

1 1 0

2 2 1

3 2 1

4 3 0

5 2 1

6 4 0