C/C++

Как завершить условие в функции?

Условие:
Напишите функцию, которая вернет минимальное простое число из массива по ссылке.Для этого создайте 2 фнукции. Первая будет определять является ли число простым, а вторая определять минимальное простое число.
Первую функцию можно определить следующим образом:
Возвращаемое значение – true/false.Принимаемые аргументы – одно число
Вторая функция:
Возвращаемое значение – ссылка на минимальное простое число
Принимаемые аргументы – (1) массив; (2) длина массива
Тело функции:
В цикле, пройдясь по элементам массива, для каждого элемента вызывается
первая функция. В зависимости от возвращаемого результата первой
функции (true / false), определяется минимальное простое число.
Моё решение:
 #include 
#include
using namespace std;
bool easyNum(int* arr, const int length) {

for (int i = 2; i * i
#include <limits>
#include <iostream>
using namespace std;
bool is_prime(int x) {
bool prime;
if (x <= 1) prime = false;
else if (x <= 5 && (x <= 2 || x == 3 || x == 5)) {
prime = true;
} else if (~x & 1 || 0 == x % 3 || 0 == x % 5) {
prime = false;
} else {
int n;
for (n = 3; n * n <= x && x % n; n += 2) { ; }
prime = n * n > x ? true : false;
}
return prime;
}
int* min_prime(int* box, const size_t length) {
const auto end = box + length;
auto max_value = numeric_limits<int>::max();
auto min = &max_value;
for (auto beg = box; beg != end; ++beg) {
if (is_prime(*beg) && *beg < *min) {
min = beg;
}
}
return *min != max_value ? min : end;
}
int main() {
int box[]{ 1, 2, 3, 7, 0 };
const auto min = min_prime(box, size(box));
if (min != end(box)) {
cout << "min prime: box[" << distance(box, min) << "] = " << *min << '\n';
} else {
puts("Not found!");
}
}
ЕС
Еркебулан Сундетов
52 419
Лучший ответ
первая функция по условию принимает одно число а не массив

bool easyNum (const int& num)
{ ваша реализация проверки числа на простоту }

вторая функция ищет минимальное число && простое
{ int* min_simple = nullptr; //указатель для хранения результата
int i;
for (i=0;i<length; i++)
{
if (easyNum(arr[i])) {min_simple = arr+i; break;} //нахождение первого простого числа
}
for (++i;i<length;i++)
{
if (easyNum(arr[i])&&arr[i]<*min_simple) min_simple = arr+i; //проверка остальных
}
return *min_simple;
}
остается вопрос, как должна вести себя функция, если простых чисел нет в массиве, ведь ссылки не несуществующий элемент быть не может