Vissza

3. labor

  1. Írjunk egy Python függvényt, amely meghatározza hogy két szám legnagyobb közös osztójának a meghatározsakor hány osztást végez az euklideszi algoritmus. Alkalmazzuk a függvényt, több a billentyűzetről beolvasott számpárra. A beolvasott számpárok között legyenek egymásutáni Fibonacci számok. Mit veszünk észre az egymásutáni Fibonacci számok esetében.
  2. Az állományban számpárok vannak, írjunk programot, amelyben a Lamé tétel helyességét ellenőrizzük ezekre a számpárokra. (Lamé tétele: az eukleidészi algoritmus során végzett osztások száma nem lesz nagyobb, mint ötször a kisebbik szám számjegyeinek száma).
  3. Írjunk egy Python függvényt amely meghatározza legnagyobb közös osztóját, ahol x minden esetben bejárja az a és b közötti egész számokat. Az a és b számok értékét a billentyűzetről olvassuk be.
  4. Írjunk egy Python függvényt, amely meghatározza hogy hány a, b számpár lesz relatív prim, ha a, b is legfeljebb 10, 100, 1000, végül 5000.
  5. Az állományban számpárok vannak, olvassuk ki ezeket a számpárokat és határozzuk meg a számpárok legnagyobb közös osztóját euklideszi, illetve kivonásos módszerrel.
  6. Az állományban számpárok vannak, olvassuk ki ezeket a számpárokat és határozzuk meg a számpárok legkisebb közös többszörösét, használjuk az euklideszi algoritmust.
  7. Írjunk Python függvényt, amely meghatározza egy kétismeretlenes diofantoszi egyenlet pozitív megoldásait, majd alkalmazzuk a függvényt a következő feladatok megoldásának a meghatározásához:


  8. Írjunk függvényeket, amelyek a racionális számokkal végezhető alapműveletek eredményeit határozzák meg (összeadás, kivonás, szorzás, osztás, abszolút-érték), ahol a racionális számokat egész értékpárokként kezeljük.
  9. Definiáljunk egy olyan függvényt, amely meghatározza a billentyűzetről beolvasott (x, y, n) esetében k(x/y)n értékét, alkalmazva a gyorshatványozó algoritmust, ahol x/y racionális szám, és n egész szám. Az algoritmus az x és y értékeket mint egész szám kell kezelje, az eredmény is két egész szám kell legyen, ahol az egyik szám a számláló, a másik szám a nevező értékét jelenti.
  10. A racionális számok előállításánál tanult algoritmusoknál az I. módszert írjuk úgy át, hogy minden racionális szám csak egyszer szerepeljen a listában.
  11. Határozzuk meg, hogy egy adott (x,y) egész számpárokként ábrázolt racionális szám, hányadik az I. módszer szerint előállított sorban, illetve a II. módszer szerint előállított sorrendben.
  12. Írjunk algoritmust, amely tetszőleges racionális szám (egész számpár) esetében meghatározza annak lánctört jegyeit. Az előadáson tárgyalt algoritmust alakítsuk át úgy hogy a lánctört utolsó jegye mindig 1 legyen.
  13. n-ed rendű Farey sorozatnak nevezzük a h/k típusú törtek halmazának, növekvő sorrendben felírt elemeit, ahol 0<=h<=k<=n, lnko( h, k) = 1. A sorozat első eleme 0 = 0/1, az utolsó elem: 1 = 1/1. Írjunk programot, mely, meghatározza adott n-re, az n-ed rendű Farey sorozatot.
    Megjegyzések:
    • n = 4: 0/1 1/4 1/3 1/2 2/3 3/4 1/1
    • n = 5: 0/1 1/5 1/4 1/3 2/5 1/2 3/5 2/3 3/4 4/5 1/1
    • az n+1-ed rendű sorozat előállítható az n-ed rendű sorozat alapján, úgy hogy az a1/b1, a2/b2 törtek közé beszúrjuk az (a1+a2)/(b1+b2) törtet. Ha nagyobb nevezőt kapunk mint n, akkor nem szúrunk be új elemet.
    • az n-ed rendű sorozat előállítható a következőképen is:
      • az n-ed rendű sorozat első két eleme mindig: 0/1, 1/n
      • az a1/b1, a2/b2 elemek után következő a3/b3 elemet, képlettel is meghatározhatjuk: a3/b3 =(a2·k-a1)/(b2·k-b1), k = (n+b1)//b2
  14. Határozzuk meg az n-ed rendű Farey sorozatban szereplő racionális számok lánctörtjegyeit, illetve ezek összegét. Milyen összefüggés figyelhető meg?
  15. Például, az ötöd rendű Farey sorozatban szereplő 2/5 racionális szám lánctört jegyei: [0, 2, 1, 1], az összeg pedig 4.