Dicsőségtabló Beadós programozási feladatok

Hasonló dokumentumok
Dicsőségtabló Beadós programozási feladatok

2016, Diszkrét matematika

Dicsőségtabló Beadós programozási feladatok

Minden egész szám osztója önmagának, azaz a a minden egész a-ra.

Diszkrét matematika 1. estis képzés. Komputeralgebra Tanszék ősz

2018, Diszkre t matematika. 10. elo ada s

6. előadás Faktorizációs technikák közepes méretű osztókra

6. előadás Faktorizációs technikák közepes méretű osztókra

RSA algoritmus. P(M) = M e mod n. S(C) = C d mod n. A helyesség igazoláshoz szükséges számelméleti háttér. a φ(n) = 1 mod n, a (a 1,a 2,...

Nagy Gábor compalg.inf.elte.hu/ nagy ősz

Komputeralgebra Rendszerek

2018, Diszkre t matematika. 8. elo ada s

Információk. Ismétlés II. Ismétlés. Ismétlés III. A PROGRAMOZÁS ALAPJAI 2. Készítette: Vénné Meskó Katalin. Algoritmus. Algoritmus ábrázolása

Számelmélet (2017. február 8.) Bogya Norbert, Kátai-Urbán Kamilla

Sapientia Egyetem, Matematika-Informatika Tanszék.

SzA XIII. gyakorlat, december. 3/5.

1.1. Definíció. Azt mondjuk, hogy a oszója b-nek, vagy más szóval, b osztható a-val, ha létezik olyan x Z, hogy b = ax. Ennek jelölése a b.

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:

Programozás I. 1. előadás: Algoritmusok alapjai. Sergyán Szabolcs

7. Számelmélet. 1. Lehet-e négyzetszám az a pozitív egész szám, amelynek tízes számrendszerbeli alakjában 510 darab 1-es és valahány 0 szerepel?

Maple. Maple. Dr. Tóth László egyetemi docens Pécsi Tudományegyetem, 2007

Data Security: Public key

Szimulációs technikák

Számelméleti alapfogalmak

C programozási nyelv Pointerek, tömbök, pointer aritmetika

I. ALAPALGORITMUSOK. I. Pszeudokódban beolvas n prim igaz minden i 2,gyök(n) végezd el ha n % i = 0 akkor prim hamis

Algoritmuselmélet. Bonyolultságelmélet. Katona Gyula Y.

Hatványozás. A hatványozás azonosságai

Felvételi vizsga mintatételsor Informatika írásbeli vizsga

Programozás I. Sergyán Szabolcs Óbudai Egyetem Neumann János Informatikai Kar szeptember 10.

BABEŞ-BOLYAI TUDOMÁNYEGYETEM MATEMATIKA-INFORMATIKA KAR Felvételi verseny - minta Informatika írásbeli

Számelmélet. 4. Igazolja, hogy ha hat egész szám összege páratlan, akkor e számok szorzata páros!

2018, Diszkrét matematika

Prímtesztelés, Nyilvános kulcsú titkosítás

C programozás. { Márton Gyöngyvér, 2009 } { Sapientia, Erdélyi Magyar Tudományegyetem }

Sorozatok I. Brósch Zoltán (Debreceni Egyetem Kossuth Lajos Gyakorló Gimnáziuma)

Brósch Zoltán (Debreceni Egyetem Kossuth Lajos Gyakorló Gimnáziuma) Számelmélet I.

Assignment problem Hozzárendelési feladat (Szállítási feladat speciális esete)

Programozás I. házi feladat

Programozás alapjai 9. előadás. Wagner György Általános Informatikai Tanszék

Klasszikus algebra előadás. Waldhauser Tamás április 28.

MŰSZAKKIOSZTÁSI PROBLÉMÁK A KÖZÖSSÉGI KÖZLEKEDÉSBEN

KÉSZÍTSÜNK ÁBRÁT évfolyam

Függvények. Programozás alapjai C nyelv 7. gyakorlat. LNKO függvény. Függvények(2) LNKO függvény (2) LNKO függvény (3)

Programozás alapjai C nyelv 7. gyakorlat. Függvények. Függvények(2)

Komputeralgebra Rendszerek

The Mathematical Explorer

Nagy Gábor compalg.inf.elte.hu/ nagy ősz

Hatékonyság 1. előadás

OSZTHATÓSÁG. Osztók és többszörösök : a 3 többszörösei : a 4 többszörösei Ahol mindkét jel megtalálható a 12 többszöröseit találjuk.

Algoritmizálás. Horváth Gyula Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Diszkrét matematika I.

Interfészek. PPT 2007/2008 tavasz.

Amit a törtekről tudni kell Minimum követelményszint

Bevezetés az algebrába az egész számok 2

Algoritmusok, adatszerkezetek, objektumok

Diszkrét matematika I.

Microsoft Excel 2010

Oszthatósági problémák

Programozás I. Sergyán Szabolcs Óbudai Egyetem Neumann János Informatikai Kar szeptember 10.

SZÁMÍTÁSOK A TÁBLÁZATBAN

2018, Funkcionális programozás

Adatszerkezetek Tömb, sor, verem. Dr. Iványi Péter

TANMENET IMPLEMENTÁCIÓ ELŐREHALADÁS BESZÁMOLÓ. Rendszerezés, kombinativitás. Induktív gondolkodás általánosítás. megtalálása különböző szövegekben.

SP-1101W Quick Installation Guide

Programozás alapjai gyakorlat. 2. gyakorlat C alapok

Térképek jelentése és elemzése

Amit a törtekről tudni kell 5. osztály végéig Minimum követelményszint

Függvények növekedési korlátainak jellemzése

6. A Pascal nyelv utasításai

Algoritmuselmélet 18. előadás

Programozási technológia

Prímszámok. A cikkben szereplő eredmények 2008 decemberéből származnak.

Más szavakkal formálisan:, ahol olyan egész szám, hogy. Más szavakkal formálisan:, ahol olyan egész szám, hogy.

Nagy Gábor compalg.inf.elte.hu/ nagy ősz

Hallgatói segédlet a tananyag megjelenítéséhez

Statisztikai függvények

megtalálásának hihetetlen nehéz voltán alapszik. Az eljárás matematikai alapja a kis FERMAT-tétel egy következménye:

Algoritmuselmélet 2. előadás

Algoritmuselmélet gyakorlat (MMN111G)

Számelmélet. 1. Oszthatóság Prímszámok

Nagy Gábor compalg.inf.elte.hu/ nagy ősz

Matematikai programok

Kongruenciák. Waldhauser Tamás

Grafikus folyamatmonitorizálás

5 labda ára 5x. Ez 1000 Ft-tal kevesebb, mint a nyeremény 1p. 7 labda ára 7x. Ez 2200Ft-tal több, mint a nyeremény 1p 5 x x 2200

Egyedi cölöp függőleges teherbírásának számítása

2017, Diszkrét matematika

Sapientia Egyetem, Műszaki és Humántudományok Tanszék.

1. melléklet: A tanárokkal készített interjúk főbb kérdései

Az Informatika Elméleti Alapjai

Nagy Gábor compalg.inf.elte.hu/ nagy ősz

Törtek. Rendelhetőek nagyon jó szemléltethető eszközök könyvesboltokban és internetek is, pl:

A SPIN használata, példák II

Számelmélet, műveletek, egyenletek, algebrai kifejezések, egyéb

Területi primitívek: Zárt görbék által határolt területek (pl. kör, ellipszis, poligon) b) Minden belső pont kirajzolásával (kitöltött)

Diszkrét matematika I.

Algoritmuselmélet. Hashelés. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem

Conway életjátéka (Conway' s Game of Life)

SZÁMÍTÓGÉPES ADATFELDOLGOZÁS

Átírás:

Dicsőségtabló Beadós programozási feladatok Hallgatói munkák 2017 2018

Készítő: Maurer Márton (GI, nappali, 2017) Elméleti háttér A szita a neves ókori görög matematikus, Eratoszthenész módszere, amelynek segítségével egyszerű kizárásos algoritmussal meghatározhatjuk a prímszámokat 1 és n között Algoritmus Írjuk fel a számokat 1-től n-ig. Az 1-et már inicializáláskor kidobjuk, hiszen tudjuk róla, hogy nem prím, mivel Z-ben egység. A 2 az első szám, ami nincs lehúzva, ez lesz az első prím; az összes többszörösét húzzuk le a listáról Válasszuk ki a következő nem lehúzott számot (ez most a 3), ez lesz a következő prím. Ennek a számnak a többszöröseit is húzzuk le a listáról. Az előző lépés ismétlése, amíg a következő le nem húzott szám értéke kisebb mint Programozási környezet, jellemzők Java, NetBeans IDE 8.1 alatt GUI 2

Futási idő, hatékonyság A futási idő alapvetően n nagyságától függ. (Tudjuk, hogy nagyobb n-ekre az eljárás már nem hatékony, ill. direkt módon nem is alkalmazható.) Minden egyes szitálás alatt végig kell nézni a teljes listát (O(n) maradékos osztás) A program felülete (részletek) Az n szám bekérése Végeredmény (n = 10000 esetén, a 2567 vizsgálata) 3

A kód bemutatása 1. Szitál(int szám): lefuttatja a vizsgálatot a megadott szitáló szám -mal Akkor szitálja ki a vizsgált számot, ha az osztható maradék nélkül a szitáló számmal (azaz annak többszöröse) Fontos, hogy az éppen vizsgált szám ne úgy szitálódjon ki, mint a többszörösei (akkor a 1 szitálja ki, ami a prímszámot jelenti a programban) 4

A kód bemutatása 2.: színek Egy táblázat (JTable) celláinak a módosításához felül kell definiálni az alapértelmezett cellákra vonatkozó Renderer utasítást. Ezek után már egyszerűen beállíthatjuk egy cella háttérszínét, ha tudjuk, hogy milyen színnel kell kitölteni (SzínVálasztó). 5

A kód bemutatása 3.: színek (folyt.) SzínVálasztó(int szám): Kikeresi az szl listából a megadott számot és a hozzá tartozó színt Ha nem találjuk a listában a számot, akkor az utolsó színhez hozzárendeljük, majd egy új színt adunk a listához, aminek az RGB színkódját 0 és 255 közötti véletlenszámokból generáljuk 6

A kód bemutatása 4.: színek (folyt.) A színekhez tartozó számok jelentése, és az alapértelmezett színek elhelyezkedése a listában Az első 11 prímszám mindig ugyanazt a színt kapja Szám 1 2 szám Jelentés Prímszám vagy nem kezelt szám A színhez nincs szám rendelve A szám szitálta ki 7

A kód bemutatása 5.: a felhasználói interfész frissítése TáblaFrissít() a táblázat összes cellájának háttérszínét beállítja a megfelelő színre FeliratFrissít() a bal alsó sarokban található feliratokat frissíti (Lépésszám, Utolsó vizsgált elem) SzínFrissít() az utolsó használt színt megjeleníti a bal alsó sarokban Egyéb érdekesség, korlátok A program Integer adattípust használ a számok tárolásához. Ennek felső korlátját (2 147 483 647) nem léphetjük túl. Ez a korlát is csak elvi, mert ténylegesen csak jóval kevesebb számot lehet a memóriában elhelyezni (1 és n között minden számot tárolnunk kell) 8

Carmichael számok Készítő: Lukácsi Róbert (GI, levelező, 2016) Elméleti háttér A Carmichael-féle számok olyan erős pszeudoprímek, amelyek szinte mindig becsapják a Fermat-tesztet. Konkrétan, csak azok a b alapok buktatják le őket, amikor b n. Felderítésük elméleti és gyakorlati szempontból is fontos. A legkisebb ilyen szám az 561 = 3 11 17. Algoritmus A matematikai meghatározás alapján Programozási környezet, jellemzők Java, NetBeans IDE 8.1 alatt GUI Futási idő, hatékonyság A vizsgált tartományban (kb. 2 bájtos egészek) barátságos futási teljesítmény Egyéb érdekes tapasztalatok BigInteger adattípus (beépítve), hatékonyan támogatja a nagypontosságú aritmetikát Néhány további adattípus-jellegzetességet később kiemelten bemutatunk 9

Carmichael számok A program felülete, futási kép és eredmény (részlet) 10

Carmichael számok A kód lényegi része 11

Carmichael számok A BigInteger osztály néhány használt metódusa.isprobableprime(valószínűség) egy BigInteger típusú számról eldönti (nagy valószínűséggel), hogy prímszám-e (tdk. prímjelölt-teszt) A valószínűség átadási értékként változtatható.nextprobableprime() megadja az adott BigInteger utáni következő prímet (prímjelöltet).modpow(,) moduláris hatványozás, kiszámítja az a b (mod c) értéket ( okos algoritmus a háttérben, a közbülső lépéseknél is mod c dolgozik).gcd() két BigInteger típusú szám lnko-ját számítja ki.add(),.substract(),.multiply(),.divide() matematikai +,, * és / műveletek BigInteger típusú számokra.compareto(),.equals() két BigInteger típusú szám megfelelő összehasonlítása (<, =, <> stb.) Egyéb érdekes BigInteger sajátosság BigInteger.ZERO, BigInteger.ONE stb. konstansok létrehozhatók, ezzel kiváltva a folyamatos.valueof() kiértékelést 12

Carmichael számok A BigInteger osztály két figyelemre méltó gyári eljárása.multiply(): látható, hogy az implementációban a Karacuba szorzómódszert (is) használják.passesmillerrabin(,): prímteszt eljárások hívják meg 13