예제 #1
0
def generate_semiprimes(n):
    ''' n is num_digits '''
    import random
    random.seed(1)

    nums = xrange_(BASE**n, BASE**(n+1)-1)

    nums = itertools.ifilter(is_prime, nums)

    for p, q in itertools.combinations_with_replacement(nums, 2):
        assert is_prime(p)
        if random.random() < 0.9999:
            continue

        target = p*q
        yield target
예제 #2
0
    EXP30 = 292951160076082381
    EXP40 = 1208925727750433490141601
    EXP50 = 1267650589799944054235347335521
    EXP70 = 696898287104567707994557936377097402581467
    EXP100 = 803433889244035421575180038607945042433021719029044123614381
    RSA100 = 1522605027922533360535618378132637429718068114961380688657908494580122963258952897654000350692006139
    #target = 143
    #target = 56153
    target = EXP30
    print factorisation_summary(target)
    analyse(target, product_to_hamming_distance, 10000000)
    raise Exception

    n = 17
    nums = range(2**n, 2**(n+1)-1)

    nums = (num for num in nums if is_prime(num))

    for p, q in itertools.combinations_with_replacement(nums, 2):

        import random
        if random.randint(0, 1) == 1:
            continue

        target = p*q

#        print factorisation_summary(target)
        error_func = product_to_hamming_distance
        max_states = 100000

        analyse(target, error_func, max_states=max_states)