コード例 #1
0
def solve():
    minD = 10**10
    j = 1
    while True:
        j += 1
        p_j = pentagonal_number(j)
        #p_k < p_j
        k_start = find_pentagonal_index_below(max(1, p_j - minD)) + 1
        # choose start such that: |p_j - p_k_start |< minD
        if p_j - pentagonal_number(j-1) > minD:
            break 
        for k in range(k_start, j):
            p_k = pentagonal_number(k) 
            diff = p_j - p_k
            if diff < minD and is_pentagonal_number(diff) and is_pentagonal_number(p_k + p_j):
                minD = diff
                print(minD, k, j)
    
    print("The minimal value for D is %(minD)d" % vars())
コード例 #2
0
def solve(T):
    return find_first(lambda n: is_pentagonal_number(n) and is_hexagonal_number(n) and n > T, triangulars())