Для начала определим функцию определения простого числа:
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
Если у вас получится выполнить задачу более оптимально рада услышать ваши предложения.
print('')
print("В 1992 году на землю упала летающая тарелка из нее выбрался и сбежали 2 неопознаных объекта...")
print("Люди в 2021 году в глубинах Антарктиды где-то 2000 км обнаружили ужасное неопозноное щудовище.")
print("По подробностям очивидцов он был похож на огромного белого червя. Его длина составляла больше 10м...")
print("Емо дали имя", nlo, "Учений ", scientist1, "доказал что в 1992 над Землей пролетала летающая тарелка и из нее")
print("Выбрался и убежал в сторону антрактиды неопознаный объект, но по словам очивидцов он был похож на человека...")
print("В 2023 году случии нападение", nlo, "были обнаружини в Австралии...")
print("2025 году людей пришлосбь депортировать потому-что нападение", nlo, "стали случатся почти каждый день")
print("В 2027 году уже вся Австралия кишала", nlo, "Ученыие", scientist1, "и", scientist2, "считают что если ето не остановить,")
print("то приблезительно к 2060 году вся планета будет кишать етими тварями")
print("2030 год. В Японии и Африке были случаии нападения на людей", nlo + "...")
print("Через 2 месяца миру обявились люди которие были в летающий тарелке в 1992 году")
print("Ихх имена", name, "и его напарник", partner, "они сказали что знают как победить етих щудовищ")
print("но для етого им нужны мателиали и время на создание какого-то оружия...")
print("Через 1 неделю наши герои создали оружие и сказали что через 1 месяц все", nlo,"будут убити")
print("И действительно все твари били убити но как и в любой войне не обошлось и без потерь")
print("(было убито больше 25000 войск и около 1 млн. людей)")
print("Дальше все было хорошо люди жили долго и в надежде что такого больше не будет.")
Пояснення:
Для начала определим функцию определения простого числа:
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
Если у вас получится выполнить задачу более оптимально рада услышать ваши предложения.
НАДЕЮСЬ ТЫ ПОНЯЛ(А)