как получить число простых чисел от каждого элемента в массиве C++?

мой код дает все простие числа массива но мне нужно найти количество простых чисел каждого отдельно взятого елемента масива...

Примеры:

Входные данные

5 --» 1 2 3 4 5

Результат работы

0 0 1 2 2

Входные данные

11 --» 2 3 5 7 11 13 17 19 23 29 31

Результат работы

0 1 2 3 4 5 6 7 8 9 10

 ```
      #include <iostream>

      int main() 
     {
       int n;
       std::cin >> n;
       int arr[100];
       for (int i = 0; i < n; i++)
       {
       std::cin >> arr[i];
       }
       std::cout << "N of primes:";
       for (int i = 0; i < n ; i++)
       {
       for (int j = 2; j <= arr[i] / 2; j++)
       {
        if (arr[i] % j == 0 && arr[i] != j)
        {
            arr[i] = 0;
            break;
           }
        }
        if (arr[i] != 0)
        {
           std::cout << arr[i] << " ";
         }
        }   
       }
      ```

я начинающий в C++ поэтому мне нужны простые решение задачи

спасибо заранее!


Ответы (2 шт):

Автор решения: Nosorog

Я добавил в код комментарии, чтобы было понятнее.

#include <iostream>
int main(){
    // заведем переменную, в которой будем хранить кол-во простых чисел
    long long counter = 0;
    long long n; std::cin >> n;
    // считаем количество вводимых чисел
    for(long long i = 0; i < n; ++i){
        // будем считывать N простых чисел и проверять их на простоту. Переменна flag нужна как переключатель - простое число или нет
        bool flag = true;
        long long tmp; std::cin >> tmp;
        // выведем счетчик
        std::cout << counter << " ";
        // проверка на простоту
        if(tmp == 1) continue; // 1 - не простое число, уходим на новую итерацию
        for(long long d = 2; d * d <= tmp; d++){
            if(tmp % d == 0) flag = false; // если число не простое, не будем увеличиваь счетчик
        }
        if(flag) counter++;
    }
}

→ Ссылка
Автор решения: Vardan
    ```
      #include <iostream>

       int main() {
       unsigned int n, count = 0, num;
       std::cin >> n;
       int arr[100];
       for (int i = 0; i < n; ++i) {
       std::cin >> arr[i];
       }
       for (int i = 0; i < n; ++i) {
       std::cout << count << " ";

       num = arr[i];
       if (num == 2)
       count++;
       if (num < 2 || num % 2 == 0)
       continue;
       int j;
       for (j = 2; j < num; j++)
       if (num % j == 0)
       break;
       if (j * j > num)
       count++;
       }
       }
     ```

как решить проблему когда вводятся 10 чисел например --» 3 5 7 11 13 17 19 23 29 31 Правильный ответ был 1 2 3 4 5 6 7 8 9 10

сейчас программа дает ответ 0 1 2 3 4 5 6 7 8 9

→ Ссылка