You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

072a Uebung.ipynb 3.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. {
  2. "cells": [
  3. {
  4. "cell_type": "markdown",
  5. "metadata": {
  6. "collapsed": true,
  7. "pycharm": {
  8. "name": "#%% md\n"
  9. },
  10. "slideshow": {
  11. "slide_type": "slide"
  12. }
  13. },
  14. "source": [
  15. "_Aufgabe 1_\n",
  16. "\n",
  17. "Schreiben Sie eine Funktion *prim_sum_up_to*, die die Summe aller Primzahlen von 2 bis *n* berechnet, wobei *n* als\n",
  18. "Parameter übergeben wird."
  19. ]
  20. },
  21. {
  22. "cell_type": "code",
  23. "execution_count": null,
  24. "metadata": {
  25. "slideshow": {
  26. "slide_type": "slide"
  27. }
  28. },
  29. "outputs": [],
  30. "source": [
  31. "def prim_sum_up_to(end):\n",
  32. " prims = []"
  33. ]
  34. },
  35. {
  36. "cell_type": "code",
  37. "execution_count": null,
  38. "metadata": {
  39. "pycharm": {
  40. "name": "#%%\n"
  41. },
  42. "slideshow": {
  43. "slide_type": "slide"
  44. }
  45. },
  46. "outputs": [],
  47. "source": [
  48. "def prim_sum_up_to(n):\n",
  49. " result = 0\n",
  50. " for m in range(2, n+1):\n",
  51. " if is_prim(m):\n",
  52. " result += m\n",
  53. " return result\n",
  54. "\n",
  55. "def is_prim(n):\n",
  56. " divisor = 2\n",
  57. " while divisor * divisor <= n:\n",
  58. " if n % divisor == 0:\n",
  59. " return False\n",
  60. " divisor += 1\n",
  61. " return True\n",
  62. "\n",
  63. "print(prim_sum_up_to(100))\n"
  64. ]
  65. },
  66. {
  67. "cell_type": "markdown",
  68. "metadata": {
  69. "slideshow": {
  70. "slide_type": "slide"
  71. }
  72. },
  73. "source": [
  74. "_Aufgabe 2_\n",
  75. "\n",
  76. "Sobald Sie die Funktion mit größeren *n* aufrufen, steigt die Laufzeit des Programms an. Um zu verhindern,\n",
  77. "dass der Anwender fälschlicherweise annimmt, dass das Programm abgestürzt ist, soll jede Sekunde ein\n",
  78. "Stern ausgegeben werden, bis das Ergebnis vorliegt.\n",
  79. "\n",
  80. "Verwenden Sie hierfür das in der Standardbibliothek enthaltene Modul <code>datetime</code> und\n",
  81. "importieren Sie daraus die Objekte <code>datetime</code> und <code>timedelta</code>.\n"
  82. ]
  83. },
  84. {
  85. "cell_type": "code",
  86. "execution_count": null,
  87. "metadata": {
  88. "slideshow": {
  89. "slide_type": "slide"
  90. }
  91. },
  92. "outputs": [],
  93. "source": []
  94. },
  95. {
  96. "cell_type": "code",
  97. "execution_count": null,
  98. "metadata": {
  99. "pycharm": {
  100. "name": "#%%\n"
  101. },
  102. "slideshow": {
  103. "slide_type": "slide"
  104. }
  105. },
  106. "outputs": [],
  107. "source": [
  108. "from datetime import datetime, timedelta\n",
  109. "\n",
  110. "last_run = datetime.now()\n",
  111. "intervall = timedelta(seconds=1)\n",
  112. "\n",
  113. "def do_only_every_second():\n",
  114. " global last_run\n",
  115. " if last_run + intervall > datetime.now():\n",
  116. " return\n",
  117. " print(\"*\", end='')\n",
  118. " last_run = datetime.now()\n",
  119. "\n",
  120. "\n",
  121. "def is_prim(n):\n",
  122. " divisor = 2\n",
  123. " while divisor * divisor <= n:\n",
  124. " if n % divisor == 0:\n",
  125. " return False\n",
  126. " divisor += 1\n",
  127. " do_only_every_second()\n",
  128. " return True\n",
  129. "\n",
  130. "print(f'\\n{prim_sum_up_to(1000000)}')\n"
  131. ]
  132. },
  133. {
  134. "cell_type": "markdown",
  135. "metadata": {
  136. "pycharm": {
  137. "name": "#%% md\n"
  138. },
  139. "slideshow": {
  140. "slide_type": "slide"
  141. }
  142. },
  143. "source": [
  144. "Vielleicht können Sie das Prinzip in einem zukünftigen Praktikum nutzen, wenn nicht bei jedem Schleifendurchlauf\n",
  145. "etwas passieren soll...."
  146. ]
  147. }
  148. ],
  149. "metadata": {
  150. "celltoolbar": "Slideshow",
  151. "kernelspec": {
  152. "display_name": "Python 3 (ipykernel)",
  153. "language": "python",
  154. "name": "python3"
  155. },
  156. "language_info": {
  157. "codemirror_mode": {
  158. "name": "ipython",
  159. "version": 3
  160. },
  161. "file_extension": ".py",
  162. "mimetype": "text/x-python",
  163. "name": "python",
  164. "nbconvert_exporter": "python",
  165. "pygments_lexer": "ipython3",
  166. "version": "3.9.9"
  167. }
  168. },
  169. "nbformat": 4,
  170. "nbformat_minor": 1
  171. }