Example #1
0
File: test_pe.py Project: jpaeng/PE
def test_p027():
    pr27_coeff_list = common.sieve_erathosthenes(50)
    pr27_prime_list = common.sieve_erathosthenes(3000)
    assert p02x.consecutive_prime_count(1, 41, pr27_prime_list) == 40
    assert p02x.consecutive_prime_count(-1, 41, pr27_prime_list) == 41
    assert p02x.max_count_given_b(41, pr27_coeff_list, pr27_prime_list) == (-1, 41, 41)
    assert p02x.max_count_combination(pr27_coeff_list, pr27_prime_list) == (-5, 47, 43)
Example #2
0
File: p03x.py Project: jpaeng/PE
def circular_primes_not_efficient_for_sparse_list(max_n):
    prime_list = common.sieve_erathosthenes(max_n)
    circ_prime_list = []
    for p in prime_list:
        circ_prime_list.extend(check_circular_prime_not_efficient_for_sparse_list(p, prime_list))
    circ_prime_list.sort()
    return circ_prime_list
Example #3
0
File: p03x.py Project: jpaeng/PE
def circular_primes(max_n):
    """Return list of all circular primes up to max_n."""
    prime_list = common.sieve_erathosthenes(max_n)
    circ_prime_list = []
    for p in prime_list:
        if is_circular_prime(p, prime_list):
            circ_prime_list.append(p)
    return circ_prime_list
Example #4
0
File: p00x.py Project: jpaeng/PE
def least_common_multiple_of_sequence(maxfactor):
    product = 1
    prime_list = common.sieve_erathosthenes(maxfactor)
    for prime in prime_list:
        prime_product = prime
        while prime_product <= maxfactor:
            product *= prime
            prime_product *= prime
    return product
Example #5
0
File: test_pe.py Project: jpaeng/PE
def test_common():
    # variables
    ordered_list = list(range(-10, 10))
    prime_list_10 = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29]

    # power_digit_sum
    common.power_digit_sum(2, 15) == 26

    # index_in_ordered_list
    assert common.index_in_ordered_list(-10, ordered_list) == ordered_list.index(-10)
    assert common.index_in_ordered_list( -1, ordered_list) == ordered_list.index(-1)
    assert common.index_in_ordered_list(  0, ordered_list) == ordered_list.index(0)
    assert common.index_in_ordered_list(  9, ordered_list) == ordered_list.index(9)
    assert common.index_in_ordered_list( 10, ordered_list) == -1
    assert common.index_in_ordered_list(-11, ordered_list) == -1

    # is_in_ordered_list
    assert common.is_in_ordered_list(-10, ordered_list)
    assert common.is_in_ordered_list( -1, ordered_list)
    assert common.is_in_ordered_list(  0, ordered_list)
    assert common.is_in_ordered_list(  9, ordered_list)
    assert common.is_in_ordered_list( 10, ordered_list) is False
    assert common.is_in_ordered_list(-11, ordered_list) is False

    assert common.str_permutation(11, '0123') == '1320'
    assert common.str_permutation(999999, '0123456789') == '2783915460'

    # get_factors
    assert common.get_factors(1) == [1]
    assert common.get_factors(16) == [1, 2, 4, 8, 16]

    # sieve_erathosthenes
    assert common.sieve_erathosthenes(30) == prime_list_10
    assert common.sieve_erathosthenes(30) != ordered_list
    assert common.sieve_erathosthenes2(30) == prime_list_10
    assert common.prime_list_mr(0, 30) == prime_list_10

    # get_prime_factors
    assert common.get_prime_factors(0, prime_list_10) == []
    assert common.get_prime_factors(2, prime_list_10) == [2]
    assert common.get_prime_factors(512, prime_list_10) == [2]
    assert common.get_prime_factors(60, prime_list_10) == [2, 3, 5]
    assert common.get_prime_factors(6469693230, prime_list_10) == prime_list_10
Example #6
0
File: p03x.py Project: jpaeng/PE
def truncatable_primes():
    """Return list of primes that are both left and right truncatable."""
    prime_list = common.sieve_erathosthenes(1000000)

    left_extend_primes = next_left_extend_prime('3', prime_list)
    left_extend_primes.extend(next_left_extend_prime('7', prime_list))

    right_extend_primes = next_right_extend_prime('2', prime_list)
    right_extend_primes.extend(next_right_extend_prime('3', prime_list))
    right_extend_primes.extend(next_right_extend_prime('5', prime_list))
    right_extend_primes.extend(next_right_extend_prime('7', prime_list))

    left_extend_primes.sort()
    right_extend_primes.sort()
    trunc_primes = []
    for p in left_extend_primes[2:]:
        if p in right_extend_primes:
            trunc_primes.append(p)
    # print(left_extend_primes)
    # print(right_extend_primes)
    # print(trunc_primes)
    return trunc_primes
Example #7
0
File: p03x.py Project: jpaeng/PE
         num_product *= fraction[0]
         den_product *= fraction[1]
     print(zfraction_list)
     print(common.reduce_fraction(num_product, den_product))
 elif problem_num == 34:
     print()
     print(factorial_sum_list(200))
     print(factorial_sum_list())
 elif problem_num == 35:
     print(circular_primes(100))
     print(len(circular_primes(1000000)))
 elif problem_num == 36:
     print(double_base_palindromes(1000))
     print(double_base_palindromes(1000000))
 elif problem_num == 37:
     prime_list_10M = common.sieve_erathosthenes(10000000)
     print(next_right_extend_prime('379', prime_list_10M))
     print(next_left_extend_prime('797', prime_list_10M))
     print(truncatable_primes())
 elif problem_num == 38:
     print(pandigital_concatenated_multiples())
 elif problem_num == 39:
     print()
     p_list = integral_right_triangle_perimeters(100)
     p_list.sort()
     print(p_list)
     p_list = integral_right_triangle_perimeters(1000)
     max_count = 0
     max_count_p = 0
     for zprime in p_list:
         zcount = p_list.count(zprime)
Example #8
0
File: p06x.py Project: jpaeng/PE
            n = n // prime
            ratio *= (prime-1)/prime
            break
    f = int(0.5 + n/ratio)
    max_ratio = (n, f, ratio)

    return max_ratio


# Problem 60-69 Checks
if __name__ == '__main__':  # only if run as a script, skip when imported as module
    problem_num = 69

    if problem_num == 60:
        print()
        zprime_list = common.sieve_erathosthenes(10**5)
        print('check_prime_concatenations(7, 109, zprime_list) = ', check_prime_concatenations(7, 109, zprime_list))
        print('check_prime_concatenations(7, 11, zprime_list) = ', check_prime_concatenations(7, 11, zprime_list))
        print('check_prime_pairs(1, [7, 109], zprime_list) = ', check_prime_pairs(1, [7, 109], zprime_list))
        print('check_prime_pairs(4, [7, 109], zprime_list) = ', check_prime_pairs(4, [7, 109], zprime_list))
        print('min_prime_pair_set(2) = ', min_prime_pair_set(2))
        print('min_prime_pair_set(3) = ', min_prime_pair_set(3))
#        print('min_prime_pair_set(4) = ', min_prime_pair_set(4))
        print('min_prime_pair_set_mr(4) = ', min_prime_pair_set_mr(4))
        print('min_prime_pair_set_mr(5) = ', min_prime_pair_set_mr(5))
    elif problem_num == 61:
        print()
        zside_count = 3
        for z in range(1, 4):
            print('polygonal_number_list(', zside_count, ',', z, ') = ', generate_polygonal_number_list(zside_count, z))
        print()
Example #9
0
File: p02x.py Project: jpaeng/PE
         print(fibonacci_greater_than(10**z))
     print(fibonacci_greater_than(10**999)[0])
 elif problem_num == 26:
     print()
     for z in range(1, 11):
         print(z, recurring_cycle(z))
     zlongest = 0
     zlongest_z = 1
     for z in range(1, 1000):
         zcycle_length = recurring_cycle(z)
         if zlongest < zcycle_length:
             zlongest = zcycle_length
             zlongest_z = z
     print(zlongest_z, zlongest)
 elif problem_num == 27:
     pr27_coeff_list = common.sieve_erathosthenes(1000)
     pr27_prime_list = common.sieve_erathosthenes(1200000)
     print(consecutive_prime_count(1, 41, pr27_prime_list))
     print(consecutive_prime_count(-1, 41, pr27_prime_list))
     print(consecutive_prime_count(-79, 1601, pr27_prime_list))
     print(max_count_given_b(41, pr27_coeff_list, pr27_prime_list))
     print(max_count_given_b(1601, pr27_coeff_list, pr27_prime_list))
     print(max_count_combination(pr27_coeff_list, pr27_prime_list))
 elif problem_num == 28:
     pr28_dim = 5
     print(pr28_dim, number_spiral_diagonal_sum(pr28_dim, 1, 1))
     pr28_dim = 1001
     print(pr28_dim, number_spiral_diagonal_sum(pr28_dim, 1, 1))
 elif problem_num == 29:
     pr29_list = [z for z in range(2, 6)]
     print(distinct_powers(pr29_list))