Помогите с с++ пж
Написать функцию, возвращающую количество простых чисел в передаваемом ей массиве.
#include <iostream>
#include <vector>
using namespace std;
bool is_prime(int n) { // простейшая проверка на простоту
if (n < 2) { return false; }
if (n % 2 == 0) { return n == 2; } // отдельно проверяем чётные
for (int i = 3; i * i <= n; i += 2) { // цикл только по нечётным
if (n % i == 0) { return false; }
}
return true;
}
int prime_count(vector<int> &arr) { // в С++ нормальный массив - vector
int cnt = 0;
for (auto v: arr) { cnt += is_prime(v); }
return cnt;
}
int main() {
int n;
cin >> n; // ввод размера массива
vector<int> arr(n);
for (auto &v: arr) { cin >> v; } // ввод самого массива
cout << prime_count(arr);
} #include <iostream>
bool is(int n) {
if(n <= 1) return false;
for(int i = 2; i < n; i++) {
if(n % i == 0) return false;
} return true;
}
int count(int arr[], int size) {
int c = 0;
for(int i = 0; i < size; i++){
if(is(arr[i])) c++;
} return c;
}
int main() {
int arr[] = { 11, 12, 1, 5, 4, 7, 27, 83 };
std::cout << count(arr, 8) << std::endl;
return 0;
}
Для решения этой задачи нам нужно проверить каждый элемент массива на простоту и посчитать количество простых чисел. Простое число — это натуральное число, большее 1, которое делится только на 1 и само себя.
Ниже приведен пример функции на C++, которая принимает массив целых чисел и возвращает количество простых чисел в нем:
#include <iostream>
using namespace std;
// Функция для проверки, является ли число простым
bool isPrime(int n) {
// 1 и 0 не являются простыми числами
if (n <= 1) return false;
// Проверяем делимость числа n на все числа от 2 до sqrt(n)
for (int i = 2; i * i <= n; ++i) {
if (n % i == 0) return false;
}
return true;
}
// Функция для подсчета количества простых чисел в массиве
int countPrimes(int arr[], int size) {
int count = 0;
// Перебираем все элементы массива
for (int i = 0; i < size; ++i) {
if (isPrime(arr[i])) { // Проверяем, простое ли число
count++;
}
}
return count;
}
int main() {
int array[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 11};
int size = sizeof(array) / sizeof(array[0]);
cout << "Количество простых чисел в массиве: " << countPrimes(array, size) << endl;
return 0;
}
### Пояснение:
1. **Функция isPrime:** Проверяет, является ли переданное число простым. Она проверяет делимость числа на все числа от 2 до √n. Если находится хоть одно число, на которое n делится без остатка, функция возвращает false.
2. **Функция countPrimes:** Перебирает все элементы массива и вызывает функцию isPrime для каждого элемента. Если элемент оказывается простым числом, увеличиваем счётчик.
3. **Основная программа:** В функции main создается массив целых чисел и вызывается функция countPrimes, которая считает простые числа в этом массиве.
Этот код должен работать правильно и возвращать количество простых чисел в переданном массиве.