0
from perms import perms


def dfac(n):
    potential_factors = [9, 8, 7, 6, 4, 3, 2, 1]
    factors = [9, 8]
    n //= 72
    while n != 1:
        for f in potential_factors:
            if n % f == 0 and f != 1:
                factors.append(f)
                n //= f
                break
            elif f != 1:
                potential_factors = potential_factors[1:]
                break
            else:
                return ['f']
    return factors[::-1]


##############################################################################

version = 1

perms_length = len(perms)

index = 17701


def search(start: int):
    for ones in range(start, index + 9144 * version, 9):  # ignore this weird range
        i = 1
        for p in perms:
            if len(dfac(int('1' * ones + p))) == 1:
                print(f'{ones} ({i} / {perms_length})')
            else:
                cool = f'\n\n\nOnes: {ones}\nPerm: {p}\n\n\n'
                print(cool)
                exit()
            i += 1


search(20077)

perms 是一个数字(作为字符串)的 113600 个排列的列表。我在每个排列的开头添加了一堆,并尝试将每个排列分解为个位数因子(dfac)。如果 dfac 未能将数字分解为 [9, 8, 7, 6, 4, 3, 2] 的任意组合,则在列表 ['f'] 中返回失败字符串。我如何将其与多处理分开以使其更快?

4

0 回答 0