Для начала определим функцию определения простого числа:
def issimple(n):
r=math.ceil(math.sqrt(n))
for i in range(2,n):
if n%i==0:
return False
return True
для оптимизации перебираем числа до квадратного корня искомого числа. Если n делится на хотя бы одно число от 2-х до корня n возвращаем false. Иначе True
Приведу полный оптимизированный текст:
import math
def issimple(n):
r=math.ceil(math.sqrt(n))
for i in range(2,n):
if n%i==0:
return False
return True
n=5
s=[2,3]
while True:
if issimple(n) is True:
s.append(n)
if len(s)==10001:
break
n+=2
print(s[-1])
Объяснение:Не смотря на все попытки дальнейшей оптимизации цикл выполняется чуть меньше 3-х минут.
Основные принципы оптимизации: перебираем начиная с 5-ти и увеличиваем на 2 (чтобы не включать четные числа.
Условием выхода из цикла является длина списка = 10001
Если у вас получится выполнить задачу более оптимально рада услышать ваши предложения.
НАДЕЮСЬ ТЫ ПОНЯЛ(А)
Поделитесь своими знаниями, ответьте на вопрос:
Исполнитель чертёжник пе ре ме ща ет ся на ко ор ди нат ной плоскости, остав ляя след в виде линии. чертёжник может вы пол нять ко ман ду сме стить ся на (a, b) (где a, b – целые числа), пе ре ме ща ю щую чертёжника из точки с ко ор ди на та ми (x, y) в точку с ко ор ди на та ми (x + a, y + b если числа a, b положительные, зна че ние со от вет ству ю щей ко ор ди на ты увеличивается, если от ри ца тель ные — уменьшается. например, если чертёжник на хо дит ся в точке с ко ор ди на та ми (1, 1), то ко ман да сме стить ся на (–2, 4) пе ре ме стит чертёжника в точку (–1, 5). запись повтори k раз команда1 команда2 команда3 конец означает, что по сле до ва тель ность ко манд команда1 команда2 команда3 по вто рит ся k раз. чертёжнику был дан для ис пол не ния сле ду ю щий алгоритм: повтори 3 раз сместиться на (1, 3) сме стить ся на (–2, –5) конец сместиться на (4, 8) какую ко ман ду надо вы пол нить чертёжнику, чтобы вер нуть ся в ис ход ную точку, из ко то рой он начал движение? 1) сме стить ся на (–1, 2) 2) сме стить ся на (–1, –2) 3) сме стить ся на (1, –2) 4) сме стить ся на (–2, 1)
Квадрат разлинован на N×N клеток (1 < N < 17). Исполнитель Робот может перемещаться по клеткам, выполняя за одно перемещение одну из двух команд: вправо или вниз. По команде вправо Робот перемещается в соседнюю правую клетку, по команде вниз – в соседнюю нижнюю. При попытке выхода за границу квадрата Робот разрушается. Перед каждым запуском Робота в каждой клетке квадрата лежит монета достоинством от 1 до 100. Посетив клетку, Робот забирает монету с собой; это также относится к начальной и конечной клетке маршрута Робота.
Определите максимальную и минимальную денежную сумму, которую может собрать Робот, пройдя из левой верхней клетки в правую нижнюю.
В ответе укажите два числа – сначала максимальную сумму, затем минимальную.
Исходные данные представляют собой электронную таблицу размером N×N, каждая ячейка которой соответствует клетке квадрата.
Объяснение: