Skip to content

Commit 451585c

Browse files
committed
Fixed Recursion limit issue by using while loop instead
1 parent bb7d455 commit 451585c

File tree

1 file changed

+11
-8
lines changed

1 file changed

+11
-8
lines changed

Random.py

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,17 @@ def get_random_prime(cls, bits: int) -> int:
1717
"""
1818
:return: Returns a random prime number.
1919
"""
20-
# Get a random number with that amount of bits
21-
# [2 ^ (bits - 1) :to: 2 ^ bits - 1]
22-
# For example, for 3 bits:
23-
# [0b100 :to: 0b111]
24-
random_number: int = randint(2 ** (bits - 1), 2 ** bits - 1)
25-
# If it is prime, return it
26-
# Otherwise, test a new random number (recursion)
27-
return random_number if cls.is_prime(random_number) else cls.get_random_prime(bits=bits)
20+
# Until we find a valid random prime
21+
while True:
22+
# Get a random number with that amount of bits
23+
# [2 ^ (bits - 1) :to: 2 ^ bits - 1]
24+
# For example, for 3 bits:
25+
# [0b100 :to: 0b111]
26+
random_number: int = randint(2 ** (bits - 1), 2 ** bits - 1)
27+
# If it is prime
28+
if cls.is_prime(random_number):
29+
# Return it
30+
return random_number
2831

2932
@classmethod
3033
def is_prime(cls, number: int) -> bool:

0 commit comments

Comments
 (0)