Top.Mail.Ru
Ответы

Помогите с с++ пж

Написать функцию, возвращающую количество простых чисел в передаваемом ей массиве.

По дате
По рейтингу
Аватар пользователя
Гений
123456789101112131415161718192021222324252627
 #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);
} 
Аватар пользователя
Профи
12345678910111213141516171819202122
 #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++, которая принимает массив целых чисел и возвращает количество простых чисел в нем:

1234567891011121314151617181920212223242526272829303132333435363738
 #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, которая считает простые числа в этом массиве.

Этот код должен работать правильно и возвращать количество простых чисел в переданном массиве.



Видео по теме