Exemplo n.º 1
0
def stable_expansion(digits, n):
    values = continued_fraction_cycle(n)
    h_values = [1, values[0]]  # a_0
    k_values = [0, 1]

    cycle_length = len(values) - 1  # we only cycle over a_1,...,a_{k-1}
    last = expanded_digits(h_values[1], k_values[1], digits)
    index = 1
    relation = [1, values[index]]
    h_values = recurrence_next(relation, h_values)
    k_values = recurrence_next(relation, k_values)
    current = expanded_digits(h_values[1], k_values[1], digits)
    while current != last:
        index += 1
        last = current

        relative_index = ((index - 1) % cycle_length) + 1
        # we want residues 1,..,k-1 instead of the traditional 0,...,k-2
        relation = [1, values[relative_index]]
        h_values = recurrence_next(relation, h_values)
        k_values = recurrence_next(relation, k_values)
        current = expanded_digits(h_values[1], k_values[1], digits)
    return current
Exemplo n.º 2
0
def main(verbose=False):
    non_squares = [num for num in range(1, 10000 + 1)
                   if not is_power(num, 2)]
    cycle_lengths = [len(continued_fraction_cycle(num)) - 1
                     for num in non_squares]
    return len([num for num in cycle_lengths if num % 2 == 1])