Как сократить время выполнения ⇐ Python
-
Гость
Как сократить время выполнения
Я решаю один из ката CodeWars и получил ошибку времени выполнения Время выполнения истекло (12000 мс), проблема, вероятно, связана с простыми числами.
мой окончательный код выглядит так:
из математического импорта sqrt защита sum_for_list(lst): abs_max = max((abs(i) для i в lst)) primes = [i for i in range(2, abs_max + 1) if all(i % j != 0 for j in range(2, int(sqrt(i)) + 1))] пары = [[j, i] для i в списке для j в простых числах, если i % j == 0] рез = {} для меня в парах: res[i[0]] = i[1], если i[0] не в res, иначе res[i[0]] + i[1] return sorted([[k, v] для k, v в res.items()]) Мне потребовался целый день на поиски того, как сократить код выполнения, но проблема все еще остается, и я схожу с ума. Пожалуйста, хотя бы подскажите, что мне следует использовать.
Итак, есть массив pos или neg ints lst, и мне нужно найти пары [a,b], a — простое число, а b — сумма целых чисел из заданного lst, для которого a является простым множителем (деленным на a без остатка), например, если lst [12, 15], он должен вернуть result = [[2, 12], [3, 27], [5, 15]]< /код> URL-адрес ката: https://www.codewars.com/kata/54d496788 ... 52f/python
Я решаю один из ката CodeWars и получил ошибку времени выполнения Время выполнения истекло (12000 мс), проблема, вероятно, связана с простыми числами.
мой окончательный код выглядит так:
из математического импорта sqrt защита sum_for_list(lst): abs_max = max((abs(i) для i в lst)) primes = [i for i in range(2, abs_max + 1) if all(i % j != 0 for j in range(2, int(sqrt(i)) + 1))] пары = [[j, i] для i в списке для j в простых числах, если i % j == 0] рез = {} для меня в парах: res[i[0]] = i[1], если i[0] не в res, иначе res[i[0]] + i[1] return sorted([[k, v] для k, v в res.items()]) Мне потребовался целый день на поиски того, как сократить код выполнения, но проблема все еще остается, и я схожу с ума. Пожалуйста, хотя бы подскажите, что мне следует использовать.
Итак, есть массив pos или neg ints lst, и мне нужно найти пары [a,b], a — простое число, а b — сумма целых чисел из заданного lst, для которого a является простым множителем (деленным на a без остатка), например, если lst [12, 15], он должен вернуть result = [[2, 12], [3, 27], [5, 15]]< /код> URL-адрес ката: https://www.codewars.com/kata/54d496788 ... 52f/python
Мобильная версия