From a1468466605881a4f533d7fbf594f61bdd239966 Mon Sep 17 00:00:00 2001 From: oltnd Date: Sat, 30 Nov 2024 16:50:30 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=B8=D1=82?= =?UTF-8?q?=D1=8C=20main.cpp?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.cpp | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/main.cpp b/main.cpp index 7687125..127e30f 100644 --- a/main.cpp +++ b/main.cpp @@ -235,6 +235,44 @@ string convertToBase(int number, int base) { reverse(result.begin(), result.end()); return result.empty() ? "0" : result; // Если число 0, вернуть "0" } +void sieveOfEratosthenes(int n) { + // Создаем вектор для хранения простоты чисел. Изначально считаем, что все числа простые. + vector isPrime(n + 1, true); + + // 0 и 1 не являются простыми числами. + isPrime[0] = isPrime[1] = false; + + for (int i = 2; i * i <= n; ++i) { + if (isPrime[i]) { + // Отмечаем все кратные i как составные. + for (int j = i * i; j <= n; j += i) { + isPrime[j] = false; + } + } + } + + // Выводим все простые числа. + cout << "Простые числа до " << n << ": "; + for (int i = 2; i <= n; ++i) { + if (isPrime[i]) { + cout << i << " "; + } + } + cout << endl; +} +void z2() { + int n; + cout << "Введите предел для поиска простых чисел: "; + cin >> n; + + if (n < 2) { + cout << "Простых чисел нет." << endl; + } + else { + sieveOfEratosthenes(n); + } + +} void z5_16() { string inputFile = "input.txt"; // Исходный файл string outputFile = "output.txt"; // Файл для результатов @@ -361,6 +399,7 @@ void z5_22() { void showMenu() { cout << "Меню задач:\n"; cout << "1. «Алгоритм Евклида»\n"; + cout << "2. «Решето какого-то чела»\n"; cout << "3. 3.16\n"; cout << "4. 3.22\n"; cout << "6. 4.16\n"; @@ -378,6 +417,7 @@ void launchTasks() { switch (choice) { case 1: z1launcher(); break; + case 2: z2(); break; case 3: z3_16(); break; case 4: z3_22(); break; case 6: z4_16(); break;