Другие языки программирования и технологии
Используя функцию find_if найти первое простое число
Дан целочисленный вектор. Используя функцию find_if найти первое простое число (по определению 0 и 1 простыми числами не являются)
А в чем вопрос-то?
#include <iostream>
#include <vector>
#include <random>
#include <algorithm>
#include <utility>
#include <cstdlib>
#include <locale>
using namespace std;
bool is_prime(const long num) {
if (!num) return false;
bool prime;
if (num < 6 && (num <= 2 || num == 3 || num == 5)) prime = true;
else if (~num & 1 || 0 == num % 3 || 0 == num % 5) prime = false;
else {
int n;
for (n = 3; n * n <= num && num % n; n += 2) { ; }
prime = n * n > num;
}
return prime;
}
void fill(vector<long>& box, const size_t n, long a, long b) {
if (a > b) swap(a, b);
const uniform_int_distribution<long> uid(a, b);
random_device rd;
mt19937 gen(rd());
for (size_t i = 0; i < n; ++i) box.push_back(uid(gen));
}
void show(const vector<long>& box) {
for (const auto value : box) cout << ' ' << value;
cout.put('\n');
}
int main() {
const size_t n = 20;
const long a = 100;
const long b = 999;
vector<long> box;
fill(box, n, a, b);
show(box);
const auto prime = find_if(box.begin(), box.end(), is_prime);
setlocale(LC_CTYPE, "Russian");
if (prime != box.end()) cout << "Первое простое число: " << *prime;
else cout << "Вектор не содержит простых чисел!";
cout.put('\n');
system("pause");
}
#include <vector>
#include <random>
#include <algorithm>
#include <utility>
#include <cstdlib>
#include <locale>
using namespace std;
bool is_prime(const long num) {
if (!num) return false;
bool prime;
if (num < 6 && (num <= 2 || num == 3 || num == 5)) prime = true;
else if (~num & 1 || 0 == num % 3 || 0 == num % 5) prime = false;
else {
int n;
for (n = 3; n * n <= num && num % n; n += 2) { ; }
prime = n * n > num;
}
return prime;
}
void fill(vector<long>& box, const size_t n, long a, long b) {
if (a > b) swap(a, b);
const uniform_int_distribution<long> uid(a, b);
random_device rd;
mt19937 gen(rd());
for (size_t i = 0; i < n; ++i) box.push_back(uid(gen));
}
void show(const vector<long>& box) {
for (const auto value : box) cout << ' ' << value;
cout.put('\n');
}
int main() {
const size_t n = 20;
const long a = 100;
const long b = 999;
vector<long> box;
fill(box, n, a, b);
show(box);
const auto prime = find_if(box.begin(), box.end(), is_prime);
setlocale(LC_CTYPE, "Russian");
if (prime != box.end()) cout << "Первое простое число: " << *prime;
else cout << "Вектор не содержит простых чисел!";
cout.put('\n');
system("pause");
}
Похожие вопросы
- Найти первое пятнадцатизначное число. С++
- Задача по информатике: Найти все простые числа в промежутке от 20 до 70 ? Не могу решить
- Помогите найти алгоритм вычисления простых чисел
- Pascal . Дан массив вещественных чисел. Найти сумму элементов, номера которых являются простыми числами
- Помогите найти, алгоритм нахождения Произведения простых чисел, на С++, или литературу которая поможет разобраться.
- Как построить логическую функцию с IF?
- Найдите наибольшее четырехзначное число, которое при делении на любое однозначное число, кроме 1,2и3, дает в остатке 3
- qbasic простые числа
- нужно решение с++. С клавиатуры вводится 13 целых чисел, найти позиции всех простых чисел.
- Дан линейный массив чисел N. N вводит пользователь. Вывести все простые числа массива.