mirror of
https://github.com/autistic-symposium/master-algorithms-py.git
synced 2025-04-29 12:16:14 -04:00
48 lines
781 B
Python
Executable File
48 lines
781 B
Python
Executable File
#!/usr/bin/env python
|
|
|
|
__author__ = "bt3"
|
|
|
|
|
|
'''
|
|
find prime factors of a number.
|
|
'''
|
|
|
|
import math
|
|
import random
|
|
|
|
def find_prime_factors(n):
|
|
'''
|
|
>>> find_prime_factors(14)
|
|
[2, 7]
|
|
>>> find_prime_factors(19)
|
|
[]
|
|
'''
|
|
|
|
divisors = [d for d in range(2, n//2 + 1) if n % d == 0]
|
|
primes = [d for d in divisors if is_prime(d)]
|
|
|
|
return primes
|
|
|
|
|
|
def is_prime(n):
|
|
for j in range(2, int(math.sqrt(n))):
|
|
if (n % j) == 0:
|
|
return False
|
|
return True
|
|
|
|
|
|
''' return a n-bit prime '''
|
|
def generate_prime(number=3):
|
|
while 1:
|
|
p = random.randint(pow(2, number-2), pow(2, number-1)-1)
|
|
p = 2 * p + 1
|
|
if find_prime_factors(p):
|
|
return p
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
import doctest
|
|
doctest.testmod()
|
|
|