Python 判断素数(质数)的方法讲解
写了那么久的博客,始于Python爬虫,目前专于Java学习,终于有了属于自己的小窝,欢迎各位访问我的个人网站,未来我们一起交流进步。
质数又称素数。指在一个大于1的自然数中,除了1和此整数自身外,不能被其他自然数整除的数。素数在数论中有着很重要的地位。比 1 大但不是素数的数称为合数。1 和 0 既非素数也非合数,2 是素数。
1.判断是否是素数:
import timeit
from math import sqrtdef isPrimes1(n):if n <= 1:return Falsefor i in range(2, int(sqrt(n) + 1)):if n % i == 0:return Falsereturn Truedef isPrimes2(n):if n > 1:if n == 2:return Trueif n % 2 == 0:return Falsefor x in range(3, int(sqrt(n) + 1), 2):if n % x == 0:return Falsereturn Truereturn Falseprint(timeit.timeit("isPrimes1(100)", setup="from chapter01 import isPrimes1", number=10000))print(timeit.timeit("isPrimes2(100)", setup="from chapter01 import isPrimes2", number=10000))
判断执行时间:
0.00563765699999999
0.001561703999999997
后一种方法将除 2 之外的偶数排除,大大减少了执行时间。
2.求 n 以内的素数
import timeit
from math import sqrt
import copydef listPrimes1(n):"""初始所有一个n维数组 res 表示数都为素数。从3开始将3的奇数倍标记成False,即不是素数。之后对每一个素数此行上一步操作这里我们不用管偶数倍,因为我们最后判定时默认所有偶数不是素数"""if n < 3:if n == 2:return [2]return Noneres = [True] * nfor i in range(3, int(n ** 0.5) + 1, 2):res[i * i::2 * i] = [False] * ((n - i * i - 1) // (2 * i) + 1)return [2] + [i for i in range(3, n, 2) if res[i]]def listPrimes2(n):'''计算n之内的素数:param n::return:'''if n < 3:if n == 2:return [2]return Nonenum_list = [x for x in range(2, n) if x%2 != 0]new_list = copy.copy(num_list)# new_list = []for i in num_list:# new_list.append(i)for d in range(3, int(sqrt(i)) + 1,2):if i%d == 0:new_list.remove(i)breakreturn [2] + new_listdef listPrimes3(n):'''计算n之内的素数:param n::return:'''if n < 3:if n == 2:return [2]return Nonereturn [2] + [p for p in range(2, n) if p %2 != 0 and 0 not in [p % d for d in range(2, int(sqrt(p)) + 1)]]print(timeit.timeit("listPrimes1(100)", setup="from chapter01 import listPrimes1",number=100))
print(timeit.timeit("listPrimes2(100)", setup="from chapter01 import listPrimes2", number=100))
print(timeit.timeit("listPrimes3(100)", setup="from chapter01 import listPrimes3", number=100))
整理得到三种实现方法,其中第一种方法执行时间最短。
0.000947919999999991
0.003774201000000005
0.004751936999999984
3.求 m 到 n 之间的素数
def mnPrimes1(m,n):if m == 1:num_list = [2] + [p for p in range(2, n) if p % 2 != 0 and 0 not in [p % d for d in range(2, int(sqrt(p)) + 1)]]if m >= 2:num_list = [p for p in range(m, n) if p % 2 != 0 and 0 not in [p % d for d in range(2, int(sqrt(p)) + 1)]]return num_listdef mnPrimes2(m,n):num_list = [x for x in range(m, n) if x % 2 != 0 and x != 1]new_list = copy.copy(num_list)for i in num_list:for d in range(3, int(sqrt(i)) + 1, 2):if i % d == 0:new_list.remove(i)breakif m == 2:new_list = [2] + new_listreturn new_list
Python 判断素数(质数)的方法讲解相关推荐
- python判断素数程序_使用面向对象方法检查素数的Python程序
python判断素数程序 This program will check whether a given number is Prime or Not, in this program we will ...
- Python判断素数(质数)——循换结构、控制及else循环扩展模式的实践
一.问题:Python判断素数(质数) 获得输入正整数 N,判断 N 是否为质数,如果是则输出 True,否则输出 False.不考虑输入异常. 我的答案: #质数定义为在大于1的自然数N = eva ...
- python判断素数程序_Python程序检查素数
python判断素数程序 什么是质数? (What is a prime number?) A prime number is a natural number that is greater tha ...
- php判断网页编码,python判断网页编码的方法
在web开发的时候我们经常会遇到网页抓取和分析,各种语言都可以完成这个功能.我喜欢用python实现,因为python提供了很多成熟的模块,可以很方便的实现网页抓取. 但是在抓取过程中会遇到编码的问题 ...
- python判断素数的函数_使用Python判断质数(素数)的简单方法讲解
质数又称素数.指在一个大于1的自然数中,除了1和此整数自身外,不能被其他自然数整除的数.素数在数论中有着很重要的地位.比1大但不是素数的数称为合数.1和0既非素数也非合数.质数是与合数相对立的两个概念 ...
- python 素数库_使用Python判断质数(素数)的简单方法讲解
质数又称素数.指在一个大于1的自然数中,除了1和此整数自身外,不能被其他自然数整除的数.素数在数论中有着很重要的地位.比1大但不是素数的数称为合数.1和0既非素数也非合数.质数是与合数相对立的两个概念 ...
- python中素数的求法_使用Python判断质数(素数)的简单方法讲解
质数又称素数.指在一个大于1的自然数中,除了1和此整数自身外,不能被其他自然数整除的数.素数在数论中有着很重要的地位.比1大但不是素数的数称为合数.1和0既非素数也非合数.质数是与合数相对立的两个概念 ...
- python判断质数_使用Python语言判断质数(素数)的简单方法讲解
本文主要向大家介绍了使用Python语言判断质数(素数)的简单方法,通过具体的实例让大家了解,希望对大家学习Python语言有所帮助. 质数又称素数.指在一个大于1的自然数中,除了1和此整数自身外,不 ...
- python判断素数的方法简书_判断素数
素数的定义 素数:又称质数.是大于1自然数中的除了自身和1以外不能别其他数整除的数字. 第一种方法 利用这个素数的定义,我们可以得出第一种判断素数的方法: int isPrime1(int n) { ...
- python判断素数程序_python素数判断
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 质数(prime number),又称素数,指在大于1的自然数中,除了1和该数自 ...
最新文章
- 【线上分享】云游戏面对低延迟挑战的实践
- 使用Spring Security 5进行密码编码器迁移
- (70)Verilog HDL测试激励:复位激励2
- Springmvc集成CXF请看教程二
- 白板推导系列Pytorch-隐马尔可夫模型-解码问题
- promise的理解和使用-尚硅谷教程笔记
- 启动计算机键盘没反应,为什么键盘没反应了 键盘没反应原因分析及解决方法...
- 使用ImageIO压缩图片
- 【AI参赛经验】汉字书法识别入门—by:真的学不会
- Java验证码图片工具类
- LeetCode695. 岛屿的最大面积———海岛
- 设计模式 - 创建型模式_原型模式
- 段码液晶屏笔段电压范围_LCD段码(笔段)液晶显示屏和点阵液晶显示屏
- Android笔记总结
- windows8 文件属性没有“安全”选项卡
- 百度快照被劫持 标题描述被篡改的处理过程
- 用Java Swing设计Email邮箱地址注册的图形用户界面程序
- 基于springboot的智慧物业管理系统的设计与实现(前后端分离)
- 推荐个将其他文档转为pdf的软件:Nitro PDF Creator
- mysql数据库操作命令笔记
热门文章
- html透明度从零到1,CSS过渡不透明度仅从0到1,或其他过渡效果
- Flutter Opacity 不透明度
- 原创nio socket mina+javascript+flash实现commet长连接网页聊天室
- w ndows十空格键怎么按,电脑键盘空格键失灵不能用如何修复
- Excel怎么设置下拉选择项
- 学个痛快,清华大学网上课程免费开放!知网免费下载!CSDN送课程!
- python写入txt不覆盖_python不能覆盖文件内容如何解决
- HNOI 2009 图的同构记数 题解
- 奥创手机群控安装到魅蓝3的流程
- 看图写英语作文关于计算机,终于懂了看图写英语作文模板