Самый быстрый способ проверить, делится ли число на другое в python - PullRequest
0 голосов
/ 12 октября 2018

Итак, я делал что-то с простыми числами в python, и в настоящее время я использую это

def isDivisible(number,divisor):
    if number % divisor == 0:
        return True
    return False

, чтобы проверить, делится ли число делителем.Поэтому мне было интересно, есть ли более быстрый способ сделать это?

Ответы [ 5 ]

0 голосов
/ 12 октября 2018

Тест скорости показывает, что проверка not() выполняется быстрее, чем решение != 0:

%%timeit 
not(8 % 3)
# 19 ns ± 0.925 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)

%%timeit 
8 % 3 != 0
# 27.1 ns ± 0.929 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)
0 голосов
/ 12 октября 2018

Не быстрее, но учтите, что number % divisor == 0 уже возвращает логическое значение.Таким образом, вы просто делаете

is_divisible = lambda number, divisor: number % divisor == 0

, чтобы определить свою функцию.Однако это все тот же метод, который вы используете.Может быть чуть быстрее, я не проверял.

0 голосов
/ 12 октября 2018

Я сомневаюсь, что есть "более быстрый" способ проверить это.И это кажется довольно простым.Тем не менее, я написал бы вашу функцию как:

def isDivisible(number, divisor):
    return number % divisor == 0
0 голосов
/ 12 октября 2018

возможно вы можете использовать lambda:

isDivisible = lambda x,y: x%y==0

isDivisible(4,2)

вывод:

True
0 голосов
/ 12 октября 2018

А как же:

return (number % divisor == 0)
...