В
Все
М
Математика
О
ОБЖ
У
Українська мова
Д
Другие предметы
Х
Химия
М
Музыка
Н
Немецкий язык
Б
Беларуская мова
Э
Экономика
Ф
Физика
Б
Биология
О
Окружающий мир
Р
Русский язык
У
Українська література
Ф
Французский язык
П
Психология
А
Алгебра
О
Обществознание
М
МХК
В
Видео-ответы
Г
География
П
Право
Г
Геометрия
А
Английский язык
И
Информатика
Қ
Қазақ тiлi
Л
Литература
И
История
nikitenkov20066
nikitenkov20066
09.11.2021 00: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))

Показать ответ
Ответ:
dykbguojd
dykbguojd
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
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота