6.gyakorlat
#
RöpZHMelyik á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. feladatVégezze el az 5. feladatsor 4. feladatát az általunk implementált függvényekkel.
#
5. feladatVégezze el a 200000000000000000000000000 + 450000000000000000000000011
összeadást moduláris számábrázolással.