6.gyakorlat
RöpZH#
Melyik állítás hamis?
- egy modulo m maradékosztály egymást követő elemei között a távolság m
- minden x és minden nemnulla m egészre igaz hogy: x eleme x mod m maradékosztály
- a kongruencia reláció antiszimmetrikus
- a kongruencia reláció reflexív
Írjon foo() néven függvényt, amely paraméterként egy pozitív egész számot fogad, és visszatér azon 1-nél nagyobb, de a paraméternél kisebb számok listájával, amelyek relatív prímek a paraméterhez.
1. feladat#
Írjon RNS_ConvertTo() néven függvényt, amely paraméterként a modulusok listáját valamit egy pozitív egész számot kap, és visszatér a szám moduláris számábrázolásbeli alakjával (azaz a reprezentánsok (residues) listájával), ahol a használt modulusok (moduli) a paraméterként kapott modulusok listája legyen.
Amennyiben a kapott egész szám nem ábrázolható a kapott modulusok által meghatározott intervallumban, akkor a függvény dobjon ValueError kivételt.
[0, 1, 1, 2][0, 1, 2, 3] [0, 2, 0, 4][1, 2, 3, 3] [1, 2, 1, 4]
2. feladat#
Írjon RNS_add(), RNS_sub() és RNS_mul() néven függvényeket, amelyek paraméterként a modulusok listáját valamit két darab moduláris számábrázolásbeli egész számot kapnak, és térjenek vissza a megfelelő művelet végeredményével.
A függvények nem megfelelő paraméterek esetén dobjanak ValueError kivételt.
3. feladat#
Írjon RNS_ConvertFrom() néven függvényt, amely paraméterként a modulusok listáját valamit egy moduláris számábrázolással megadott számot fogad, és térjen vissza a szám 10-es számrendszerbeli alakjával.
A függvény nem megfelelő paraméter esetén dobjon ValueError kivételt.
4. feladat#
Végezze el az 5. feladatsor 4. feladatát az általunk implementált függvényekkel.
5. feladat#
Végezze el a 200000000000000000000000000 + 450000000000000000000000011 összeadást moduláris számábrázolással.