...выглядит для меня загадочным
N, l = 3 * 10 ** 17, [1] # N подобрано вручную
while l[-1] < N:
l.append(l[-1] * 2) # просто список со степенями двойки
for p in 3, 5:
t = l # используем исходный список как затравку
while t: # пока затравка не пустая
# делаем лист из её элементов, домноженых на p
# назначаем его новой затравкой
# и добавляем его к исходному списку
l += (t := [a for a in (b * p for b in t) if a < N])
# заметь, в t только элементы кратные p**i, в l таких не было и set() не нужен
l.sort() #
for i in 2, 9, 10000: #
print(i, l[i - 1])
мне кажется, он будет выполняться слишком долго
N, l = 3 * 10 ** 17, [1] # N подобрано вручную
while l[-1] * 2 < N:
l.append(l[-1] * 2)
for p in 3, 5:
t = l
while t:
l += (t := [a for a in (b * p for b in t) if a < N])
l.sort()
for i in 2, 9, 10000:
print(i, l[i - 1])
pattern = r'[A-Za-z0-9\.]+[@][A-Za-z0-9]+[.][A-Za-z]{2,3}'
Все столбцы числовые, с NaN'ами
заменить nan на "nan"
Авторство гуглится.