此三种方法都是基于试除法,即不断地尝试能否整除。比如要判断自然数 x 是否质数,就不断尝试小于 x 且大于1的自然数,只要有一个能整除,则 x 是合数;否则,x 是质数。

方式1:从 2 一直尝试到 x-1。
方式2:从 2 一直尝试到 x/2。
方式3:从 2 一直尝试到√x。

代码部分

import time
import math
def f1(x):a = []for i in range(2, x+1):for j in range(2, i):if i % j == 0:breakelse:a.append(i)# print(a)def f2(x):a = []for i in range(2, x+1):y = int(i//2+1)for j in range(2, y):if i % j == 0:breakelse:a.append(i)# print(a)def f3(x):a = []for i in range(2, x+1):y = int(math.sqrt(i)+1)for j in range(2, y):if i % j == 0:breakelse:a.append(i)# print(a)if __name__ == '__main__':t1 = time.clock()f1(100)t2 = time.clock()print('第一种方式所用时间为{}秒'.format(t2-t1))t3 = time.clock()f2(100)t4 = time.clock()print('第二种方式所用时间为{}秒'.format(t4-t3))t5 = time.clock()f3(100)t6 = time.clock()print('第三种方式所用时间为{}秒'.format(t6-t5))

运行结果

第一种方式所用时间为0.00011377787891367015秒
第二种方式所用时间为0.00010088897856798095秒
第三种方式所用时间为0.0001515556902717247秒

在计算100以内质数时三种方法的运算速度差不多,第二种似乎占据一定优势,那来看一看如果不断增大范围,三种方法的运行速度到底有多大的差别。。。。。。

三种方式差别

显而易见,在范围10000之前,三种方式差别不大,但在10000以后,他们之间的差距呈几何扩大,可得,第三种方法远远快于前两种方法

后续,还可以尝试先将偶数去除(除2以外),再来进行试除,速度一定再上一个台阶,当然求质数还有其他N种方法,比如筛法,其发明人是公元前250年左右的一位希腊大牛——埃拉托斯特尼
首先,2是公认最小的质数,所以,先把所有2的倍数去掉;然后剩下的那些大于2的数里面,最小的是3,所以3也是质数;然后把所有3的倍数都去掉,剩下的那些大于3的数里面,最小的是5,所以5也是质数......
上述过程不断重复,就可以把某个范围内的合数全都除去(就像被筛子筛掉一样),剩下的就是质数了!

Python---试除法求质数的三种方式对比相关推荐

  1. Python 高等数学应用 求导数的三种方式

    Python 高等数学应用 求导数的三种方式 方式一 使用SymPy的diff 函数, 可以得到函数的导数表达式,给出数学表达式里的数学符号描述符 本例使用了此方法 方式二 使用spicy.misc模 ...

  2. python 爬虫 数据抓取的三种方式

    python 爬虫   数据抓取的三种方式 常用抽取网页数据的方式有三种:正则表达式.Beautiful Soup.lxml 1.正则表达式 正则表达式有个很大的缺点是难以构造.可读性差.不易适用未来 ...

  3. APS计划排程系统之下的MRPII、JIT、TOC三种方式对比分析

    1.生产物流计划的制订方式对比 ①MRPII采用的是集中式的物料计划方式,建立好产品加工程序,在电脑中确定好准确的订单需求和库存量,对各个生产单元传送生产指令: ②JIT利用的是看板管理控制方式,按照 ...

  4. 元素隐藏的三种方式对比(针对移动端项目中的按钮,先隐藏且不能被点击 visibility:hidden)

    元素隐藏的三种方式对比 display:none opacity:0 visibility:hidden 项目需求 表面一个图片遮罩,鼠标hover遮罩消失,内部元素展现,其中有一个按钮在移动端是手指 ...

  5. java 时间戳 对比_Java中获取时间戳的三种方式对比实现

    Java中获取时间戳 三种方式对比 最近项目开发过程中发现了项目中获取时间戳的业务.而获取时间戳有以下三种方式,首先先声明推荐使用System类来获取时间戳,下面一起看一看三种方式. 1.System ...

  6. 命令行运行Python脚本时传入参数的三种方式

    三种常用的方式 如果在运行python脚本时需要传入一些参数,例如gpus与batch_size,可以使用如下三种方式. python script.py 0,1,2 10 python script ...

  7. Python读取文本的三种方式对比

    1.概述 Python有三种读取文本的方式,分别是: read() readline() readlines() 2.三种方式的优缺点分析 2.1 read() 最简单的一种方法,一次性读取文件的所有 ...

  8. python基础,变量,常量,python内置管理,列表,解压缩,python与用户交互,格式化输出的三种方式

    文章目录 1.花式赋值有两种方式 1.1链式赋值 1.2 交叉赋值(python独有) 2. 列表 [] 列表: 用途: 作用: 定义方式, 3.使用方法 set 字典 dict {} 作用: 定义方 ...

  9. python列表追加的三种方式对比

    python列表追加的三种方式分别为:+, extend(), append() +是直接将两个列表拼凑在一起,并生成新的列表 extend()是将另一个列表的值插入已有列表中,并不会生成新的列表 a ...

最新文章

  1. 用python编写函数回归分析_用python编写函数的logistic回归系数
  2. 微信浏览器 返回按钮二次返回
  3. 1206封装电容在物料可靠性设计比较低
  4. JS之Boolean的toString方法
  5. Linux下捕捉信号
  6. 13.2 Question Answering 问答系统意境级讲解
  7. java nio netty_Netty精粹之JAVA NIO开发需要知道的
  8. 界面的创建(高仿QQ登入界面)
  9. 279. 完全平方数
  10. SG2525_电压模式PWM——科时进商城
  11. C语言常见题目汇总(不断更新)(建议收藏)
  12. 【Python数据分析实战】豆瓣读书分析(含代码和数据集)
  13. 18650锂电池保护板接线图_单节18650锂电池保护板的电路原理图
  14. 副本,字节跳动技术整理
  15. Zookeeper选举机制
  16. 过年了JAVA类编写烟花爆竹——学习分享下笔者的经验
  17. 女生应该怎样心疼自己的男朋友?
  18. 华为手表开发:WATCH 3 Pro(8)获取位置服务
  19. golang调用网易云API
  20. F - Oulipo(kmp经典模板题)!!!

热门文章

  1. ubuntu16.04 安装kicad5.1
  2. 怎么从服务器传输信息,大神们socket如何连接到服务器并判断从服务器传送回来的数据 谢谢谢谢 跪求啊 急用...
  3. 帧大小超过交换机mtu_三层交换机与路由器区别在哪里?
  4. python锁机制_Python并发编程之谈谈线程中的“锁机制”(三)
  5. python利用公式计算_从零开始用Python构造决策树(附公式、代码)
  6. 孔浩用的mysql工具_孔浩Java教学系列视频教程
  7. 规则引擎 drools_网易考拉规则引擎平台架构设计与实践
  8. Spring Boot项目能之前能正常跑,安装禅道后突然就不行了报错Unknown database “数据库名“
  9. 灯珠电路图_LED灯盘的实际电路到底长啥样,LDE灯珠又怎样检测?
  10. hive内置函数_Hive Query生命周期 —— 钩子(Hook)函数篇