WI-damian-kaminski/Jupyter/ZadanieJupiter1.ipynb

118 lines
3.4 KiB
Plaintext
Raw Permalink Normal View History

2021-10-23 09:55:31 +02:00
{
"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
}