8

所以我一直在用 python 中的素数做一些事情,我目前正在使用这个

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

检查一个数是否能被除数整除。所以我想知道是否有更快的方法来做到这一点?

4

5 回答 5

8

关于什么:

return (number % divisor == 0)
于 2018-10-12T06:58:22.503 回答
6

速度测试表明检查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)
于 2018-10-12T07:04:20.273 回答
5

我怀疑是否有一种“更快”的检查方式。而且看起来很简单。但是,我会将您的函数编写为:

def isDivisible(number, divisor):
    return number % divisor == 0
于 2018-10-12T06:59:35.630 回答
2

不是更快,但请注意number % divisor == 0已经返回一个布尔值。所以你可以简单地做:

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

定义你的功能。但是,这仍然是您使用的相同方法。可能会稍微快一点,我还没有测试过。

于 2018-10-12T07:01:58.850 回答
1

也许你可以使用lambda

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

isDivisible(4,2)

输出:

True
于 2018-10-12T06:59:51.597 回答