示例#1
0
def pollard_rho(num, c=1):
    if rabin.isprime_MR(num):
        return None
    x = random.randint(1, num-1)
    y = f(x,c,num)
    d = 1
    while d == 1:
        d = gcd(abs(x-y), num)
        if d == num:
            c = c+1
            return pollard_rho(num,c)
        x = f(x,c,num)
        y = f(f(y,c,num),c,num)
    return d
示例#2
0
def prime_factors(num):
    factors = [x for x in factor(num) if rabin.isprime_MR(x)]
    d = defaultdict(int)
    for fact in factors:
        d[fact] += 1
    return d