{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "23c2a4f3",
   "metadata": {},
   "source": [
    "# <span style=\"color: DarkMagenta\">Задачи для практического занятия по курсу:</span>\n",
    "\n",
    "## <span style=\"color: Purple\">\"Инструменты и библиотеки языка Python\"</span>\n",
    "\n",
    "### Лабораторная работа № 9 по теме \"Множества\" (часть 2) &#128584;&#128585;&#128586;\n",
    "\n",
    "#### Преподаватель практики: Т.Ф. Долгих, каф. ВМ и МФ, мехмат ЮФУ &#128105;&#8205;&#127979;\n",
    "\n",
    "-----------\n",
    "\n",
    "<span style=\"color: DarkRed\">**Переименовать файл:**</span> File -> Rename... -> поменять NameStud на фамилии участников группы, записанных латинскими буквами через нижнее подчёркивание -> нажать Rename.\n",
    "\n",
    "-----------\n",
    "\n",
    "<span style=\"color: DarkGreen\">**Общие указания:**</span>\n",
    "примеры работы программ, данные в заданиях &mdash; это ТОЛЬКО образцы, а не обязатальные условия, при которых должна работать программа. Придумывайте свои примеры &#128530;!\n",
    "\n",
    "<span style=\"color: Red\">Любые сортировки для множест использовать **ЗАПРЕЩЕНО**!</span>\n",
    "\n",
    "-----------\n",
    "\n",
    "&#128187; **Задание 9.7.** \n",
    "Из двух исходных списков целых чисел составить новый список, содержащий элементы обоих списков без повторений.\n",
    "Порядок элементов в новом списке &mdash; по убыванию.\n",
    "\n",
    "*Указания.*\n",
    "Исходные списки заполнить случайными числами от $-10$ до $10$ включительно.\n",
    "Размеры исходных списков задаёт пользователь.\n",
    "\n",
    "При решении использовать **только** множества и операции над ними.\n",
    "\n",
    "```\n",
    "Размер первого списка >>> 6\n",
    "Размер второго списка >>> 8\n",
    "Списки:\n",
    "[5, -9, 4, -9, 7, 0]\n",
    "[5, 9, -9, -3, 2, 10, 4, -10]\n",
    "Новый список:\n",
    "[10, 9, 7, 5, 4, 2, 0, -3, -9, -10]\n",
    "```"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "6f30e363",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "1ea3ff1d",
   "metadata": {},
   "source": [
    "&#128187; **Задание 9.8.** \n",
    "Даны две строки.\n",
    "Определить количество одинаковых символов в этих строках.\n",
    "\n",
    "*Указание.*\n",
    "При решении использовать **только** множества и операции над ними.\n",
    "\n",
    "```\n",
    "Введите первую строку >>> Мама мыла раму.\n",
    "Введите вторую строку >>> А папа Мыл полы...\n",
    "Одинаковых символов 6 шт: {'а', ' ', 'ы', 'л', '.', 'М'}\n",
    "```"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "b67d264d",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "59cbdfcd",
   "metadata": {},
   "source": [
    "&#128187; **Задание 9.9.** \n",
    "Даны две строки.\n",
    "Определить символы, которые принадлежат первой строке или второй, но не являются общими для обеих строк.\n",
    "Сколько знаков препинания среди этих символов?\n",
    "\n",
    "*Указание.*\n",
    "При решении использовать **только** множества и операции над ними.\n",
    "\n",
    "```\n",
    "Введите первую строку >>> Зорко одно лишь сердце. Самого главного глазами не увидишь.\n",
    "Введите вторую строку >>> Ты навсегда в ответе за всех, кого приручил.\n",
    "Подходящие символы: {',', 'ш', 'ы', 'ь', 'С', 'м', 'т', 'ч', 'х', 'п', 'ц', 'Т', 'З'}\n",
    "Знаков препинания: 1 шт.\n",
    "```"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "9a48733b",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "d211b372-3cad-498e-9312-824a3140bb3d",
   "metadata": {},
   "source": [
    "&#128187; **Задание 9.10.** \n",
    "Из двух исходных котежей целых чисел составить новый кортеж, содержащий элементы второго кортежа, но не содержит элементы первого котрежа.\n",
    "\n",
    "*Указания.*\n",
    "Исходные кортежи заполнить случайными числами от $20$ до $26$ включительно.\n",
    "Размеры исходных кортежий &mdash; случайные, но не более 15.\n",
    "\n",
    "При решении использовать **только** множества и операции над ними.\n",
    "\n",
    "```\n",
    "Кортежи:\n",
    "(26, 24, 26, 23, 21)\n",
    "(25, 23, 21, 20, 26, 20, 21, 26, 20, 21, 26, 22, 22, 20, 24)\n",
    "Новый кортеж:\n",
    "(25, 20, 22)\n",
    "```"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "394e9078-cc87-4767-b41a-66c35b7b50f2",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "426ca76d",
   "metadata": {},
   "source": [
    "&#128187; **Задание 9.11.** \n",
    "Дано целое число $m$. Необходимо получить множество простых чисел до $m$ включительно.\n",
    "\n",
    "Для решения этой задачи была описана функция `sieve()`, которая на вход получает целое число $n$ и возвращает множество простых чисел не превосходящих $n$.\n",
    "Если множество простых чисел не возможно составить, то функция вернёт пустое множество.\n",
    "Для поиска простых чисел был использован алгоритм \"решето Эратосфена\" (см. описание алгоритма https://ru.ruwiki.ru/wiki/Решето_Эратосфена).\n",
    "\n",
    "При описании функции было допущено несколько **семантических** ошибок.\n",
    "Исправьте эти ошибки и проверьте работу функции во втором блоке.\n",
    "\n",
    "*Указание.* Менять структуру программного кода функции и основной части программы нельзя."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "4d01508f",
   "metadata": {},
   "outputs": [],
   "source": [
    "def sieve(n):\n",
    "    if n <= 0:\n",
    "        return {}\n",
    "    s = set(range(1, n+1))\n",
    "    for p in range(1, n):\n",
    "        s = s - set(range(p*p, n, p))\n",
    "    return s"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "a62fdb90-dccd-4261-97fc-b668921969f4",
   "metadata": {},
   "outputs": [],
   "source": [
    "m = int(input('Введите целое число >>> '))\n",
    "s = sieve(m)\n",
    "print('Результат работы функции:', s)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f0cf04a7-d785-446e-b70d-b7f270a95b25",
   "metadata": {},
   "source": [
    "&#128187; **Задание 9.12.** \n",
    "Даны натуральные числа $n$ и $b$. Создайте множество $\\{a\\}$ из $n$ элементов со значениями\n",
    "$$\n",
    "  a_0 = b, \\quad\n",
    "  a_i = a_{i-1} + i^2 - 5, \\quad\n",
    "  i=1, 2,\\ldots\n",
    "$$\n",
    "\n",
    "Определите, какие значения множества $\\{a\\}$ являются простыми числами, используя для решения решето Эратосфена."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "6b714e74-e4f9-4f93-9dc0-ce438d0c866b",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.13.9"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
