Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Prime_generator_Miller_Rabin_gmpy.py
- # Ohjelma generoi suuren bittimääräältään halutukokoisen alkuluvun käyttäen
- # Alkuluvun testauksessa käytetään Miller-Rabinin menetelmään
- # perustuvaa gmpy2-kirjaston funktiota gmpy2.is_prime(..)
- # Juhani Kaukoranta 27.8.2019
- import random
- import math
- import gmpy2
- import time
- def generateLargePrime(keysize):
- # arpoo satunnaisluvun, tarkistaa Miller-Rabinin menetelmällä
- # onko alkuluku ja palauttaa alkuluvun
- while True:
- num = random.randrange(2**(keysize-1), 2**(keysize))
- if gmpy2.is_prime(num):
- return num
- print("Ohjelma generoi bittimäärältään halutunkokoisen alkuluvun")
- bittipituus = int(input("Anna alkuluvun haluttu bittimäärä, esim 256, 512,1024,2048 "))
- time0 = time.perf_counter()
- alkuluku = generateLargePrime(bittipituus)
- time1 = time.perf_counter()
- print("Annettu bittipituus oli ",bittipituus)
- print("Generoitu alkuluku on ",alkuluku)
- print("Alkulukuvun pituus on ",len(str(alkuluku))," numeroa")
- print("Tarkistus alkuluvun bittisyydelle: ", math.log(alkuluku,2))
- print("Laskenta-aika oli ",time1-time0," sekuntia")
Advertisement
Add Comment
Please, Sign In to add comment