diff --git a/Jupyter/ZadanieJupiter1.ipynb b/Jupyter/ZadanieJupiter1.ipynb new file mode 100644 index 0000000..fd2a964 --- /dev/null +++ b/Jupyter/ZadanieJupiter1.ipynb @@ -0,0 +1,117 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Algorytm Euklidesa\n", + "\n", + "Algorytm Euklidesa służy do obliczania __NWD__ (największego wspólnego dzielnika) dwóch liczb całkowitych.\n", + "Został opisany przez greckiego matematyka, **Euklidesa** w jego dziele **„Elementy”**, około trzysetnego roku przed naszą erą, co sprawia, że jest jednym z najstarszych, wciąż używanych algorytmów numerycznych.\n", + "\n", + "## Algorytm\n", + "\n", + "Aby obliczyć NWD(a,b), wykonujemy kolejno następujące kroki:\n", + "* Dzielimy z resztą liczbę a przez liczbę b\n", + " * jeżeli reszta jest równa 0, to NWD(a,b)=b\n", + " * jeżeli reszta jest różna od 0, to przypisujemy liczbie a wartość liczby b, liczbie b wartość otrzymanej reszty, a następnie wykonujemy ponownie punkt 1.\n", + " \n", + "### Przykład\n", + "\n", + "Wyznacz największy wspólny dzielnik liczb\n", + "\n", + "\n", + "\n", + "#### Program ilustrujący działanie algorytmu Eukldesa." + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Podaj pierwszą liczbę całkowitą dodatnią: 55\n", + "Podaj drugą liczbę całkowitą dodatnią: 20\n", + "a = 55; b = 20\n", + "a = 35; b = 20\n", + "a = 20; b = 15\n", + "a = 15; b = 5\n", + "a = 10; b = 5\n", + "a = 5; b = 5\n", + "nNajwiększy wspólny dzielnik liczb 55 i 20 jest równy: 5\n" + ] + }, + { + "ename": "SystemExit", + "evalue": "0", + "output_type": "error", + "traceback": [ + "An exception has occurred, use %tb to see the full traceback.\n", + "\u001b[1;31mSystemExit\u001b[0m\u001b[1;31m:\u001b[0m 0\n" + ] + } + ], + "source": [ + "def NWD(a, b):\n", + " while a != b:\n", + " a, b = max(a, b), min(a, b)\n", + " print(\"a = {a}; b = {b}\".format(a = a, b = b))\n", + " a = a - b\n", + " print(\"a = {a}; b = {b}\".format(a = a, b = b))\n", + " return a\n", + "\n", + "def main(args):\n", + " a = int(input(\"Podaj pierwszą liczbę całkowitą dodatnią: \"))\n", + " b = int(input(\"Podaj drugą liczbę całkowitą dodatnią: \"))\n", + " print(\"nNajwiększy wspólny dzielnik liczb {a} i {b} jest równy: {NWD}\".format(a = a, b = b, NWD = NWD(a, b)))\n", + " 50\n", + " \n", + " \n", + " return 0\n", + "\n", + "if __name__ == '__main__':\n", + " import sys\n", + " sys.exit(main(sys.argv))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Strony z których kożystałem\n", + "[Obliczeniowo](https://www.obliczeniowo.com.pl/707)\n", + "\n", + "[Matemaks](https://www.matemaks.pl/algorytm-euklidesa.html).\n", + "\n", + "[Wikipedia](https://pl.wikipedia.org/wiki/Algorytm_Euklidesa).\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +}