@vladis005
Начинающий веб разработчик

Как ускорить код?

Как можно ускорить данный код хоть немного?

import random
def is_prime(num):
    k = num-1
    if k == 2 or k<1 or k<3:
        a = 2
    else:
        a = random.randint(2, k)
        
    if num>1 and num != 6:
        if a**num % num == a % num:
            return True
        else:
            return False
    else:
        return False
  • Вопрос задан
  • 109 просмотров
Решения вопроса 1
@galaxy
Давайте так: что вообще этот код делает?
Похоже на тест простоты Ферма, но реализация ошибочная. Да и сам тест вероятностный, т.е. может дать false positive результат.

Если уж сильно хочется именно этот кусок непонятно чего оптимизировать, то, очевидно, что для больших чисел num возведение в степень a**num будет очень медленным. В питоне есть функция pow, которая имеет волшебный третий параметр и умеет вычислять возведение в степень по модулю очень быстро.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы