Для начала определим функцию определения простого числа:
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
Если у вас получится выполнить задачу более оптимально рада услышать ваши предложения.
НАДЕЮСЬ ТЫ ПОНЯЛ(А)
ivan-levermor
25.02.2022
Возможны опечатки это язык си++ он похож на си# #include < iostream> using namespace std; int main() { int n; cin > > n; // пункт а, если первая больше выводит 1, если последняя то 3, если равны то ==. аналогично с пунктами в и с cout < < "a)"; if (n / 100 > n % 10) cout < < 1 < < "\n"; else if (n / 100 < n % 10) cout < < 3 < < "\n"; else cout < < "==" < < "\n"; cout < < "b)"; if (n / 100 > n / 10 % 10) cout < < 1 < < "\n"; else if (n / 100 < n / 10 % 10) cout < < 2 < < "\n"; else cout < < "==" < < "\n"; cout < < "c)"; if (n / 10 % 10 > n % 10) cout < < 2 < < "\n"; else if (n / 10 % 10 < n % 10) cout < < 3 < < "\n"; else cout < < "==" < < "\n"; //system("pause"); }
Ответить на вопрос
Поделитесь своими знаниями, ответьте на вопрос:
Считать числа из файла, результат записать в файл посчитать произведение отрицательных чисел, кратных 7
Для начала определим функцию определения простого числа:
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
Если у вас получится выполнить задачу более оптимально рада услышать ваши предложения.
НАДЕЮСЬ ТЫ ПОНЯЛ(А)