zl程序教程

您现在的位置是:首页 >  Python

当前栏目

Python快速判断素数方法

2023-03-20 14:58:57 时间

代码

不废话,上代码:

def IsPrime(n):
    # 2, 3 单独处理
    if n == 2 or n == 3:
        return True
    # 不在 6 的倍数两侧的不是素数
    if n % 6 != 1 and n % 6 != 5:
        return False
    # 在 6 的倍数两侧的不一定是素数
    for i in range(5, int(n ** 0.5) + 1, 6):
        # i 的步长可以放大到 6
        if n % i == 0 or n % (i + 2) == 0:
            return False
    return True

对比

传统的判断素数函数如下:

def IsPrime1(n):  
    if n <= 1:  
        return False 
    for i in range(2, int(n ** 0.5) + 1):  
        if n % i == 0:  
            return False 
    return True

运行两个函数判断素数,得到其运行时间分别如下:

numberIsPrimeIsPrime1
39.5367431640625e-078.58306884765625e-06
41.1920928955078125e-063.0994415283203125e-06
52.384185791015625e-061.430511474609375e-06
71.6689300537109375e-061.1920928955078125e-06
1007.152557373046875e-071.6689300537109375e-06
100007.152557373046875e-071.6689300537109375e-06
1000000004.76837158203125e-072.384185791015625e-06

可以看到总体上第一个判定素数函数是要快很多的,尤其对于大素数的判定。