Kezdőoldal » Tudományok » Természettudományok » Milyen módszerrel, algoritmuss...

Milyen módszerrel, algoritmussal generálhatok álprímeket? Olyan számokat, amelyek átmennek a Miller-Rabin prímteszten (pl.2-es alappal), és mégsem prímek.

Figyelt kérdés
Lehetőleg könnyen, gyorsan, egyszerűen szgéppel. Köszi!

2013. szept. 17. 23:58
1 2
 11/16 A kérdező kommentje:

#8: " q=(p-3)/4 " ===> q=(p+3)/4 azaz p 4-gyel osztva 1 maradékot kell hogy adjon.

"ellenőrzöm, hogy q prím e, ha nem akkor a hozzá legközelebb..."

Nem, pontosan egyeznie kell.

Én kiszűrtem a 10^10*2 feletti 400000-es, és a 10^10/2 feletti 100000-es intervallumban a prímeket, és minden p-hez ami 4-gyel osztva 1 maradékot ad, megnéztem hogy q=(p+3)/4 benne van-e a másik listában.

Az egyezések(p-k, amelyekhez q prím található)), ill. hogy a szorzat SPRP-e:

113 False , 561 True , 1121 False , 1569 False , 4449 False , 4601 True , 5769 False , 7361 False , 7553 False , 8169 False , 9353 True ...

2022. jún. 1. 17:11
 12/16 anonim ***** válasza:

@15:57

"A próbaosztás lassúsága érdekes, nem gondoltam, hogy ez a mai számítási kapacitás mellett is gond."


Az paraméterezés kérdése, a számítási kapacitás meg adott. A számokból végtelen sok van, úgy van megadva a biztonsági követlemény, hogy az RSA akkora prímekkel dolgozzon, hogy ne lehessen "értelmes" időn belül prímtényezőkre bontani, a prímszámok titkosak, a szorzatuk publikus. Ami prímteszttel ellenőrizhető, hogy összetett szám, de felbontani nem tudjuk. Ha a prímteszt azt adja, hogy összetett az biztos, ha nem akkor talán prím. Ezért kell több teszt, ha prímet ad.

Ha akkora számokkal dolgozna az RSA, hogy kiszámítható lenne értelmes időn belül a prímtényezői akkor nem adna biztonságot. Egyébként rosszul megválaszott prímekkel is kiszámítható hiába elég nagyok azok. Például ha közel vannak egymáshoz, hiszen akkor a szorzat négyzet gyöke körül kell keresni és megvan.


"De akkor jól értem, hogy az, hogy ál-prím szám, az nem egy matematikai fogalom?!"

Az egy matematikai fogalom, gyűjtőfogalom. Konkrétan itt a Miller-Rabin prímteszt 2-es alapra adott álprímjeiről van szó.



"Az mindenesetre igen érdekes, és micsoda ötlet/elme lehet a mögött, amikor csak "tippelnek" ezek a tesztelő algoritmusok!"

A prímszám definícióján túlmutatóan bizonyos tulajdonságokkal rendelkeznek a prímszámok, valami van még bennük ami prímszerű. Ilyen prímszerű tulajdonságaik nem csak prímszámoknak vannak. A BPSW prímtesztnek egyetlen ismert álprímje sincs, pedig van neki és kutatási terület is. Az egy Miller-Rabin teszt 2-es alapra és egy Lucas-Selfridge ötvözete. Vannak különben olyan prímteszek is melyeknek nincsennek álprímjei (és nem a próbaosztásról beszélek, annál jóval gyorsabbak ezek is), de azok lassabbak és gyakorlatban meg a hibázási valószínűséget annyira le lehet vinni a zéró közelébe (hogy gyakorlatilag sosem következik be), hogy jobban megéri a valószínűségi prímtesztekkel a sebességük miatt.


@17:11

Te is megoszod róla a forráskódod?

2022. jún. 1. 18:05
Hasznos számodra ez a válasz?
 13/16 A kérdező kommentje:

Pythont használok (gmpy2-vel):

[link]

2022. jún. 1. 18:43
 14/16 anonim ***** válasza:
A kódnak egy részét látom. A primes_in_range-be a 3.-ik paraméter a 11 az a Miller-Rabin tesztek száma gondolom. (Bár a gmpy2.is_prime-ben a második paraméter opcionális.)
2022. jún. 1. 21:17
Hasznos számodra ez a válasz?
 15/16 A kérdező kommentje:

[link]

Nem, az azt jelenti, hogy kiírja a szitálás, ill. ellenőrzés idejét(10), és hogy nem csak megszámolja, hanem tömbben adja vissza a prímeket(+1) - offszet, n-hez képest.

Egyébként alapértelmezésként n < 10^17 esetén csak szitál (max.320M-ig használva a prímeket), nem kell feltétlenül MR-teszt.

2022. jún. 1. 21:49
 16/16 anonim ***** válasza:

Húú annyira komplikált. Ha valamilyen opció szerinti működésre van szükség és, ha a logikailag konzisztens azzal, hogy enumot használjunk akkor erre van az enmum python-ban : [link]

Még rendszerhívások esetében is aminek az interface, hardverközelibb ,ahol alig vannak típusok még ott is követik ezt az elvet pl. python-ban az os modulban bármi ami csupa nagypetűs egy-egy ilyen konstans, igaz azok nem külön-külön típusok csak sima integer-ek, mivel így kompatibilisek a hardverközelibb interface-el rendelkező rendszerhívásokkal.


Még néhány tipp:

A paraméterek típusainak jelölése. Nincs explicit típus deklarálás python-ban de jelölni lehet a típust, ami a kód átláthatóságát javítja : [link]


A függvények deklarációs sora után egy rövid összefoglaló leírás a """ vagy ''' kezdő és záró kommenttel ellátva. Ez segít akkor ha interkatív módban használod a python és kiadod a help(függvényneve), vagy ipythonban lehet függvényneve? is, illetve ha doc generátorral így lehet automatikusan dokumentációt csinálni belőle.


-----

Én is megcsináltam pythonban is.

Mindössze csak ennyi a kódom tokostól vonóstól: [link]

2022. jún. 2. 12:16
Hasznos számodra ez a válasz?
1 2

További kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!