NN = 2 * 10**5 + 10 spf = list(range(NN)) for i in range(2, int(NN**0.5)+1): if spf[i] == i: for j in range(i*i, NN, i): if spf[j] == j: spf[j] = i def fast_factorize(x): res = [] while x > 1: res.append(spf[x]) x //= spf[x] return res