В
Все
У
Українська література
Г
Геометрия
Д
Другие предметы
Э
Экономика
Г
География
О
ОБЖ
М
Математика
М
МХК
Х
Химия
Қ
Қазақ тiлi
Л
Литература
У
Українська мова
О
Обществознание
Ф
Физика
А
Английский язык
А
Алгебра
И
История
Б
Беларуская мова
Б
Биология
М
Музыка
П
Право
И
Информатика
П
Психология
В
Видео-ответы
Н
Немецкий язык
Ф
Французский язык
О
Окружающий мир
Р
Русский язык
markelovakristi
markelovakristi
28.03.2020 03:50 •  Информатика

Ускорить код: n = int(input())
i = 1
z = 1
spisok = []
a = []
while i <= n:
while z <= i:
if i % z == 0:
a.append(z)
z += 1
if len(a) % 2 == 0:
spisok.append(i)
a = []
z = 1
i += 1
print(len(spisok))

Ответ:
arzuvelieva
arzuvelieva
31.01.2022 01:20

import array

spisok = array.array('I')  # Массив положительных чисел.

for i in range(int(input())):

   if not len([0 for z in range(1, i + 1) if not i % z]) % 2: spisok.append(i)

   # not len(...) % 2 тоже что и len(...) % 2 == 0, но быстрее в 2 раза.

   # [0 for z in ...] поскольку z нам не нужен, нам нужна лишь длина, я заменил его 0-ом.

print(len(spisok))

Или

Есть , ускорить код в 20 раз, cython.

from cpython.array cimport array

n = int(input()) + 1

spisok = array('I')

cdef unsigned int i, z

for i in range(n):

   if not len([0 for z in range(1, i + 1) if not i % z]) % 2: spisok.append(i)

print(len(spisok))

Сохранишь этот код в файл с расширением pyx (например my_file.pyx)

В консоли введёшь команду:

pip install cython  # библиотека

cythonize -i my_file.pyx || py -m cythonize -i main.pyx

И создай любой .py файл, добавь туда import того файла:

import my_file

0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?