{ "cells": [ { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "# Modulska aritmetika\n", "\n", "## Predloga in testi\n", "Predloga in testi so na voljo v datoteki [modulska_aritmetika.zip](https://github.com/programiranje-SKG/naloge-daljse/blob/main/04_modulska_aritmetika/modulska_aritmetika.zip?raw=true).\n", "\n", "## Uvod\n", "Za podano praštevilo $p$, imenovano modul, definirajmo množico $Z_p = \\{0, 1, ... , p-1\\}$. Za\n", "števila iz te množice sta operaciji *modulskega seštevanja* ($\\oplus$) in modulskega množenja ($\\otimes$)\n", "definirani takole: \n", "\n", "$$a \\oplus b = (a + b) \\; mod \\; p \\\\\n", "a \\otimes b = a b \\; mod \\; p$$\n", "\n", "Zapis $s \\; mod \\; t$ predstavlja ostanek pri deljenju števila $s$ s številom $t$." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "Modulska *nasprotna vrednost* števila $a$ je število $\\bar{a}$, za katero velja $a \\oplus \\bar{a} = 0$. Modulska *obratna vrednost* števila $a \\neq 0$ je število $a^*$, za katero velja $a \\otimes a^* = 1$. Sedaj lahko definiramo tudi operaciji *modulskega odštevanja* ($ \\ominus $) in modulskega deljenja ($\\oslash$):\n", "\n", "$$a \\ominus b = a \\oplus \\bar{b} \\\\\n", "a \\oslash b = a \\otimes b^* \\; (pri \\; pogoju \\; b \\neq 0) $$\n" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "\n", "Na primer, elementi množice $Z_7$ se med sabo modulsko seštevajo, odštevajo, množijo in\n", "delijo takole:\n", "\n", "
\n", "\n", "| $\\oplus$ | 0 | 1 | 2 | 3 | 4 | 5 | 6 | \n", "|---|---|---|---|---|---|---|---|\n", "| **0** | 0 | 1 | 2 | 3 | 4 | 5 | 6 |\n", "| **1** | 1 | 2 | 3 | 4 | 5 | 6 | 0 |\n", "| **2** | 2 | 3 | 4 | 5 | 6 | 0 | 1 |\n", "| **3** | 3 | 4 | 5 | 6 | 0 | 1 | 2 |\n", "| **4** | 4 | 5 | 6 | 0 | 1 | 2 | 3 |\n", "| **5** | 5 | 6 | 0 | 1 | 2 | 3 | 4 |\n", "| **6** | 6 | 0 | 1 | 2 | 3 | 4 | 5 |\n", "\n", " | \n", " | \n", "\n", "| $\\ominus$ | 0 | 1 | 2 | 3 | 4 | 5 | 6 | \n", "|---|---|---|---|---|---|---|---|\n", "| **0** | 0 | 6 | 5 | 4 | 3 | 2 | 1 |\n", "| **1** | 1 | 0 | 6 | 5 | 4 | 3 | 2 |\n", "| **2** | 2 | 1 | 0 | 6 | 5 | 4 | 3 |\n", "| **3** | 3 | 2 | 1 | 0 | 6 | 5 | 4 |\n", "| **4** | 4 | 3 | 2 | 1 | 0 | 6 | 5 |\n", "| **5** | 5 | 4 | 3 | 2 | 1 | 0 | 6 |\n", "| **6** | 6 | 5 | 4 | 3 | 2 | 1 | 0 |\n", "\n", "\n", " |
\n", "\n", "| $\\otimes$ | 0 | 1 | 2 | 3 | 4 | 5 | 6 | \n", "|---|---|---|---|---|---|---|---|\n", "| **0** | 0 | 0 | 0 | 0 | 0 | 0 | 0 |\n", "| **1** | 0 | 1 | 2 | 3 | 4 | 5 | 6 |\n", "| **2** | 0 | 2 | 4 | 6 | 1 | 3 | 5 |\n", "| **3** | 0 | 3 | 6 | 2 | 5 | 1 | 4 |\n", "| **4** | 0 | 4 | 1 | 5 | 2 | 6 | 3 |\n", "| **5** | 0 | 5 | 3 | 1 | 6 | 4 | 2 |\n", "| **6** | 0 | 6 | 5 | 4 | 3 | 2 | 1 |\n", "\n", "\n", "\n", " | \n", " | \n", "\n", "| $\\oslash$ | 0 | 1 | 2 | 3 | 4 | 5 | 6 | \n", "|---|---|---|---|---|---|---|---|\n", "| **0** | - | 0 | 0 | 0 | 0 | 0 | 0 |\n", "| **1** | - | 1 | 4 | 5 | 2 | 3 | 6 |\n", "| **2** | - | 2 | 1 | 3 | 4 | 6 | 5 |\n", "| **3** | - | 3 | 5 | 1 | 6 | 2 | 4 |\n", "| **4** | - | 4 | 2 | 6 | 1 | 5 | 3 |\n", "| **5** | - | 5 | 6 | 4 | 3 | 1 | 2 |\n", "| **6** | - | 6 | 3 | 2 | 5 | 4 | 1 |\n", "\n", " |