11_VALODI_OSZTOK

11_VALODI_OSZTOK

Kód:

import math

n = 360

print(f"{n} valodi osztoi:")                      

for i in range(2, int(round(math.sqrt(n))) + 1):

     if i * i == n:   

          print(i, end=" ")

     else:

          print(i, " ", n // i, " ", end=" ")

Magyarázat:

import math: A math modul importálása, amely matematikai műveletek elvégzéséhez szükséges, például a négyzetgyök kiszámításához.

n = 36 Beállítja a vizsgálandó számot, amelynek valódi osztóit meg kell találni (itt a 36-ot).

print(f"{n} valodi osztoi:") Kiírja, hogy a n értékének valódi osztóit fogjuk felsorolni, formázott szöveggel (f-string).

for i in range(2, int(round(math.sqrt(n))) + 1):

Egy for ciklust indít, amely 2-től n négyzetgyökéig (egész számként) iterál. A round egészre kerekíti a négyzetgyököt, hogy a range kompatibilis legyen, a +1 biztosítja, hogy a ciklus magába foglalja a négyzetgyököt is.

n: egy pozitív egész szám.

math.sqrt(n): kiszámítja n négyzetgyökét.

round(...): kerekíti a négyzetgyököt a legközelebbi egészre.

int(...): egész számmá alakítja (ha még nem lenne az).

range(2, ...): a ciklus 2-től indul, és megy a négyzetgyökig (beleértve).

📌 Miért pont a négyzetgyökig?

Ha egy számnak van osztója, akkor az egyik osztója biztosan kisebb vagy egyenlő a négyzetgyökével. Ezért nem kell az összes számot végigpróbálni 2-től n-1-ig, elég a négyzetgyökig.

if i * i == n: 

Ellenőrzi, hogy az aktuális i négyzete megegyezik-e  n-nel (ez azt jelenti, hogy az i a n négyzetgyöke).

     print(i, end=" ")

Ha az i a négyzetgyök, akkor egyszerűen kiírja az értékét ugyanabban a sorban, szóközzel elválasztva.

else:

Ha az i nem a négyzetgyök, az else ágba lép

      print(i, " ", n // i, " ", end=" ")

Kiírja az aktuális osztót (i) és az osztótársát (n // i) ugyanabba a sorba, szóközzel elválasztva.

A prímszámok szerepe a modern titkosításban

A második világháború idején az Enigma-kód feltörése mérföldkő volt a kódfejtés történetében. Bár ebben az időszakban még nem voltak konkrétan jelen a prímszámok, később a modern időkben a titkosítástechnika egyik alappillérévé váltak. Az egyik legismertebb valós alkalmazásuk az úgynevezett RSA (Rivest-Shamir-Adleman) titkosítási algoritmus, amelyet a 20. század második felében fejlesztettek ki.

Az RSA-algoritmus lényege, hogy két nagy prímszámot választanak ki, és ezek szorzatát használják egy olyan nyilvános kulcsú titkosítási rendszer alapjaként, amely a banki tranzakciók, az online vásárlások és a kommunikáció biztonságát védi. A rendszer biztonsága azon múlik, hogy ezeknek a nagy számoknak a prímtényezőkre bontása – vagyis az eredeti prímszámok megtalálása – rendkívül időigényes, még modern számítógépek számára is.

Az RSA valódi forradalmat hozott az információbiztonság területén, és napjainkban is széles körben alkalmazzák. Gondolj csak bele, amikor egy weboldalon "https" protokollt látsz, az valószínűleg egy olyan titkosítási technikát használ, amelyben a prímszámok játszanak kulcsfontosságú szerepet.

Ez egy csodálatos példa arra, hogyan képesek a matematikai elvek – amelyek talán csak egyszerű érdekességnek tűnnek – alakítani a világunkat és megvédeni minket a digitális korban.