Az írásbeli vizsgán, az alábbiakhoz hasonló, 8 kérdésre kell választ adni. Hasonló kérdésekre lehet számítani (azaz mi a hiba, egészítsük ki, mi a függvény kimeneti értéke, adjuk meg a függvényhívást, adjuk meg a számítási eredményt) azokban a témakörökben is, amik nem jelennek meg a lenti példákban, de szerepelnek az előadás tematikájában. 1. Egészítsük ki az alábbi Python függvényt úgy, hogy a függvény meghatározza, egy listába, az első n szám faktoriális értékét: def faktl (n): p = 1 L = [] for i in range (1, n+1): p = L = 2. Egészítsük ki a következő Python függvényt úgy, hogy az a bemeneti x, n értékekre határozza meg x n értékét. def my_pow (x, n): res = 1 while n <> 0: if n % 2 == 1: res = res * x return res 3. Egészítsük ki a következő Python függvényt úgy, hogy az a bemeneti x, n, m értékekre határozza meg x n mod m értékét. def my_pow (x, n, m): res = 1 while n <> 0: if n % 2 == 1: n = n / 2 return res 4. Az alábbi Python függvény a megadott nr, n, p bemenetre, p precizitással, meghatározza nr értékét. Alakítsuk át a függvényt, úgy hogy az, p precizitással, nr értékét határozza meg. from decimal import Decimal, getcontext def my_nrt(nr, n, p): getcontext().prec = p nr = Decimal(nr) x0 = 1 xn = ((n-1) * x0 + nr/(x0 ** (n-1))) / n if xn == x0: return xn
x0 = xn 5. Egészítsük ki az alábbi Python függvényt úgy, hogy a függvény meghatározza, egy listába, az első n Fibonacci számot: def fibl (n): a, b = 0, 1 L = [a, b] for i in range (1, n): temp = a + b L = a = b = 6. Mi a hiba az alábbi Python függvényben, ha a függvény a paraméterként megadott tízes számrendszerbeli szám b-számrendszerbeli alakját kellene, meghatározza? def alakit10_b(nr, b): L = [] while nr > 0: L = [nr / b] + L nr = nr % b 7. Mi a hiba az alábbi Python függvényben, ha a függvény a paraméterként megadott lista b- számrendszerbeli számjegyei alapján kellene, meghatározza a megfelelő tízes számrendszerbeli számot? def alakitb_10 (L, b): nr = 0 p = 0 for elem in reversed(l): nr += elem * p p += b return nr 8. Egészítsük ki az alábbi Python függvényt, úgy hogy az a paraméterként megadott n számról megállapítsa, hogy prímszám-e vagy sem. def triald(n): if return True if return False i = 3 while i*i <= n: if return False i += 2 return True
9. Egészítsük ki az alábbi Python függvényt, úgy hogy az a paraméterként megadott n számig Eratosztenész szitáját alkalmazva, határozza meg az összes prímszámot. def erat(n): L = L[0] = L[1] = False for i in range (2, n): if L[i] == True: print i, while j < n: L[j] = False j += i 10. Egészítsük ki az alábbi Python függvényt, úgy hogy az a paraméterként megadott a, b egész számokra, kiterjesztett Euklideszi algoritmussal meghatározza azokat az a d, x, y égész számokat, amelyekre teljesül: a x + b y = d, ahol d = lnko (a, b). def exteuclid (a, b): x0, x1, y0, y1 = 1, 0, 0, 1 r = a % b if r == 0: return q = a / b a = b b = r x = x0 - q * x1 y = y0 - q * y1 x0, x1, y0, y1 = 11. Egészítsük ki az alábbi Python függvényt, úgy hogy az meghatározza a paraméterként kapott egész szám nagyobbik osztóját, ahol feltételezzük, hogy a paraméter összetett szám és a negyzetsz függvény -1-et ad eredményként, ha a bemenet nem négyzetszám, illetve meghatározza a szám négyzetgyökét, ha a szám négyzetszám. import math def fermat (n): a = int (math.sqrt(n)) + 1 b = a * a - n b1 = negyzetsz(b) if b1 <> -1: return a += 1 12. Egészítsük ki az alábbi Python függvényt, úgy hogy az meghatározza a paraméterként kapott egész szám egyik prímosztóját, ahol feltételezzük, hogy a paraméter két prím szorzata és az lnko függvény meghatározza a bemeneti két paraméter legnagyobb közös osztóját.
def pollard_rho(n): a = 1 b = 2 a = (a * a + 1) % n b = (b * b + 1) % n b = (b * b + 1) % n d = lnko(a-b, n) 13. Határozzuk meg a moduláris hatványozás módszerével 3 45 mod 11 értékét. 14. Alkalmazva a következő összefüggést határozzuk meg, hogy melyik racionális szám következik az 1 racionális szám után; ha az x utáni racionális szám meghatározható: 4 y 2 x y + 1 x y 15. Határozzuk meg 65, Fibonacci számok összegére való felbontását. 16. Határozzuk meg (56)10, 2-es számrendszerbeli alakját. 17. Melyik 10-es számrendszerbeli számnak felel meg (101011)2? 18. Határozzuk meg (213)10, 8-as számrendszerbeli alakját. 19. Melyik 10-es számrendszerbeli számnak felel meg (4517)8? 20. Határozzuk meg (432)10, 16-os számrendszerbeli alakját. 21. Melyik 10-es számrendszerbeli számnak felel meg (9EA)16? 22. Határozzuk meg (1011 0110)2, 8-as illetve 16-os számrendszerbeli alakját. 23. Határozzuk meg (643)8 2-es számrendszerbeli alakját. 24. Határozzuk meg (D10A)16 2-es számrendszerbeli alakját. 25. A prímszámtétel alapján adjuk meg az x-ig terjedő prímszámok számát. 26. Adjunk meg 3 pár ikerprímet. 27. Jelentsük ki Wilson tételét. 28. Határozzuk meg 64 és 18 legnagyobb közös osztóját, majd azokat az x és y egész számokat, melyekre fennáll a következő összefüggés: 64 x + 18 y = d, ahol d= lnko (64, 18). 29. Határozzuk meg 62 és 14 legnagyobb közös osztóját, majd azokat az x és y egész számokat, melyekre fennáll a következő összefüggés: 62 x + 14 y = d, ahol d= lnko (62, 14). 30. Jelentsük ki a számelmélet alaptételét. 31. Írjunk algoritmust, amely két szám esetében meghatározza azok legkisebb közös többszörösét. 32. Határozzuk meg a Fermat-féle faktorizációs módszerrel 713 prímtényezőit. 33. Adjuk meg a kongruencia egyenletek alaptulajdonságait. 34. Adjuk meg a kongruencia egyenletek aritmetikai műveletekkel kapcsolatos tulajdonságait. 35. Határozzuk meg mod 14 szerint a teljes maradékrendszert alkotó számokat. 36. Határozzuk meg mod 14 szerint a redukált maradékrendszert alkotó számokat. 37. Határozzuk meg a 9 x 12 mod 15 kongruencia megoldásait, a kiterjesztett Euklideszi algoritmus segítségével. 38. Határozzuk meg 7 inverzét mod 31 szerint, a kiterjesztett Euklideszi algoritmus segítségével. 39. Határozzuk meg 4 inverzét mod 9 szerint, majd oldjuk meg a 4 x 5 mod 9 kongruenciát.
40. Határozzuk meg 2 inverzét mod 17 szerint, majd oldjuk meg a 2 x 7 mod 17 kongruenciát. 41. Határozzuk meg 4 inverzét mod 11 szerint kétféle módszerrel: kiterjesztett Euklidesz módszerrel és a kis-fermát tétellel. Miért alkalmazható a kis-fermát tétel? 42. Határozzuk meg 4 inverzét mod 9 szerint kétféle módszerrel: kiterjesztett Euklidesz módszerrel és az Euler tétellel. 43. Bizonyítsuk be, hogy 15, 7 inverze mod 26 szerint. 44. Határozzuk meg a Pollard-féle faktorizációs módszerrel 85 prímtényezőit. 45. Hogyan alkalmazható a kis Fermát-tétel az a = 7, p = 13 számokra? 46. A következő számok közül melyik lesz 5-ös alapú álprim: 4, 8, 6. 47. Hogyan alkalmazható az Euler-tétel az a = 7, p = 9 számokra? 48. Mennyi az Euler-függvény értéke n = 10, 11, 12 számok esetében? 49. A Miller-Rabin algoritmus segítségével bizonyítsuk be, hogy 13 prímszám. 50. A Miller-Rabin algoritmus segítségével bizonyítsuk be, hogy 15 nem prímszám. 51. Adjunk példát nyilvános és titkos kulcsra, az RSA titkosító rendszer esetében, indokoljuk választásunkat, majd egy tetszőleges számot titkosítsunk. 52. A p = 13 és q = 23 prímek és e = 7 alapján titkosítsuk RSA-val a 5-ös számot, majd mondjuk meg, hogy a következő értékek közül melyik lesz az RSA titkos kulcs: 78, 57, 13, 151, 677. 53. Az RSA titkosító rendszernél milyen feltételeket kell megadnunk a kulcsokra és az üzenet hosszára vonatkozóan?