jukaukor

Prime_generator_Miller_Rabin_gmpy.py

Aug 27th, 2019
136
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.14 KB | None | 0 0
  1. # Prime_generator_Miller_Rabin_gmpy.py
  2. # Ohjelma generoi suuren bittimääräältään halutukokoisen alkuluvun käyttäen
  3. # Alkuluvun testauksessa käytetään Miller-Rabinin menetelmään
  4. # perustuvaa gmpy2-kirjaston funktiota gmpy2.is_prime(..)
  5. # Juhani Kaukoranta 27.8.2019
  6.  
  7. import random
  8. import math
  9. import gmpy2
  10. import time
  11.  
  12. def generateLargePrime(keysize):
  13. # arpoo satunnaisluvun, tarkistaa Miller-Rabinin menetelmällä
  14. # onko alkuluku ja palauttaa alkuluvun
  15. while True:
  16. num = random.randrange(2**(keysize-1), 2**(keysize))
  17. if gmpy2.is_prime(num):
  18. return num
  19.  
  20. print("Ohjelma generoi bittimäärältään halutunkokoisen alkuluvun")
  21. bittipituus = int(input("Anna alkuluvun haluttu bittimäärä, esim 256, 512,1024,2048 "))
  22. time0 = time.perf_counter()
  23. alkuluku = generateLargePrime(bittipituus)
  24. time1 = time.perf_counter()
  25. print("Annettu bittipituus oli ",bittipituus)
  26. print("Generoitu alkuluku on ",alkuluku)
  27. print("Alkulukuvun pituus on ",len(str(alkuluku))," numeroa")
  28. print("Tarkistus alkuluvun bittisyydelle: ", math.log(alkuluku,2))
  29. print("Laskenta-aika oli ",time1-time0," sekuntia")
Advertisement
Add Comment
Please, Sign In to add comment