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
运行两个函数判断素数,得到其运行时间分别如下:
number | IsPrime | IsPrime1 |
---|---|---|
3 | 9.5367431640625e-07 | 8.58306884765625e-06 |
4 | 1.1920928955078125e-06 | 3.0994415283203125e-06 |
5 | 2.384185791015625e-06 | 1.430511474609375e-06 |
7 | 1.6689300537109375e-06 | 1.1920928955078125e-06 |
100 | 7.152557373046875e-07 | 1.6689300537109375e-06 |
10000 | 7.152557373046875e-07 | 1.6689300537109375e-06 |
100000000 | 4.76837158203125e-07 | 2.384185791015625e-06 |
可以看到总体上第一个判定素数函数是要快很多的,尤其对于大素数的判定。
相关文章
- 【Python入门教程】第70篇 创建文本文件
- Python中计算绝对值fabs()函数
- python 的内置模块有哪些?
- 关于用python定(和)时(好)发(基)新(友)年(拼)祝(手)福(速)的那些事
- python变量名命名规则
- python判断语句
- 这平安夜,我们来用python演奏一首铃儿响叮当吧
- Python 入门打卡1
- Python | 集合(set)运算之intersection()
- python:求最大公约数
- spring定时任务 cron的含义
- python 导入txt文件并删除换行符并提取部分内容———MIMIC-IV/MIMIC-CXR文本报告预处理
- HJ108:求最小公倍数 python
- PYTHON前端几个框架的比较
- 初步的了解Python基础,良心推荐
- python中filter函数的用法
- python—多进程之进程池
- python中format格式化函数(全)
- python定点数
- Python案例:求满足条件的人数