#!/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()