Vissza

7. labor

I.
  1. Generáljunk véletlenszerűen egy k számjegyből álló prímszámot, ahol alkalmazzuk az osztási próba módszerét, majd az Eratosztenész szitáját.
  2. Határozzuk meg az osztási próba módszerével illetve Eratosztenész szitájával az n-ik prímszámot. Például a 100-ik prímszám: 541.
  3. Írjuk ki egy állományba az összes prímszámot, amely kisebb mint 107.
  4. Határozzuk meg egy adott szám utáni rákövetkező, illetve a számot megelőző prímszámot.
  5. Határozzuk meg egy összetett szám legkisebb, illetve legnagyobb prímosztóját.
  6. Vizsgáljuk meg két páratlan szám esetében, hogy ikerprímek-e (két páratlan szám ikerprím, ha mindkettő prím és a köztük levő különbség 2)
  7. Egy adott x páros, egész számra határozzuk meg azt a két prímszámot, amelynek összegeként felírható az adott szám (Goldbach sejtés) (x <= 107).
  8. Ellenőrizzük a prímszámtételt a tanult algoritmusokkal (osztási próba, Eratosztenész szitája) 102, 103, 104, 105, 106, 107 értékek esetében.
  9. Határozzuk meg, hogy hány k bites prímszám létezik (k <= 128).
  10. A Wilson tételt felhasználva vizsgáljuk meg egy adott x páratlan számról, hogy prímszám-e.
  11. Határozzuk meg az 10000-nél nem nagyobb a alapú Fermat-féle álprímeket.
  12. Határozzuk meg az 1000000 kisebb Carmichael számokat;
II. Írjunk programot, amely egy adott személy születési időpontja alapján meghatározza, hogy az év hányadik napján született, illetve, hogy a hét melyik napján született (feltételezzük, hogy a születési időpont nem korábbi, mint 1582. október 15).
    Pl:
    2004 3 16 -> 76, Kedd
    2000 9 7 -> 251, Csütörtök
    Megjegyzés: Egy év akkor szökőév, ha osztható 100-zal és osztható 400-zal, vagy osztható 4-el.
    if ev mod 100 == 0
    if ev % 400 == 0 return True
    else return False
    if ev mod 4 == 0 return True
    else return False
    A fenti programunk segítségével ellenőrizzük, hogy a hét milyen napjára estek a következő időpontok:
    1582, október 15, a Gergely naptár kezdete
    1620, augusztus 25, Bethlen Gábor magyar királlyá választása
    1945, július 16, az első atombomba felrobbantása
    1946, február 14, az ENIAC elkészülte
    1973, április 3, az első kézben tartható mobil

    Megoldott feladatok
    1. Az n szám prímségének az eldöntése, osztási próba módszere:
    def tDPrimeTest(nr):
    #bemeneti paraméterként egy páratlan számot kell megadni
    if nr == 3: return True
    if nr % 3 == 0: return False
    i = 5
    while i * i <= nr:
    if nr % i == 0:
    return False
    if nr % (i + 2) == 0:
    return False
    i += 6
    return True

    2. Eratosztenész szitája: ha az L lista i pozícióján True érték található, akkor, az azt jelenti, hogy az i prímszám, másképp, hogy összetett:
    def eratL(n):
    L = [True] * (n + 1)
    L[0] = L[1] = False
    i = 5
    while i * i <= n + 1:
    if L[i] == True:
    for j in range(i * i, n + 1, i): L[j] = False
    i += 2
    if L[i] == True:
    for j in range(i * i, n + 1, i): L[j] = False
    i += 4
    Prim = [2, 3]
    for i in range(5, len(L) - 2, 6):
    if L[i]: Prim += [i]
    if L[i + 2]: Prim += [i + 2]
    return Prim

    3. Véletlenszerűen kiválaszt egy számot, az L listaelemek közül.
    from random import choice
    def feladat():
    L = "abcdefghijklmnopqrstuvxyz"
    c = choice(L)
    print('a betu: ', c)

    L = ["iphone", "samsung", "huawei", "nokia"]
    c = choice(L)
    print('a telefon: ', c)

    4. Könyvtárfüggvények segítségével a II feladat:
    import datetime
    def felII_(ev, ho, na):
    d = datetime.date(ev, ho, na)
    print(d)
    print('a het napja: ', d.strftime('%a'))
    print('az ev napja: ', d.strftime('%j'))