【Python】判断素数的三种方法以及for-else语句的介绍

这篇具有很好参考价值的文章主要介绍了【Python】判断素数的三种方法以及for-else语句的介绍。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

用循环判断素数python,python,开发语言,算法

 文章来源地址https://www.toymoban.com/news/detail-761369.html

 

题目

输入一个数,如果是素数就输出"Yes",否则输出"No"

方法一:暴力枚举法

def is_prime(x):
    if x==1:
        return False;
    for i in range(2,x):
        if x%i==0:
            return False
    return True
n=int(input())
if is_prime(n):
    print("Yes")
else:
    print("No")

自定义函数is_prime(),首先排除1,然后再对该数之前的数进行枚举,当遇到能被当前的数整除时返回False,若没有数能将其整除意味着这个数是素数,返回True。然后对返回的结果进行判断从而输出"Yes"或"No"

当然,我们可以省去最后if-else的判断,直接在函数is_prime()里来输出"Yes"或"No"

def is_prime(x):
    if x==1:
        print("No")
        return
    for i in range(2,x):
        if x%i==0:
            print("No")
            break
    else:
        print("Yes")
n=int(input())
is_prime(n)

for-else语句

在上面的代码中,我采用了for-else语句,这是一个比较特殊的语句。当for循环正常结束时,else也会执行,而当for循环未正常结束,例如使用break提前退出时,则不会执行。使用这个语句往往可以减少代码量,避免使用flag。

方法二:内置函数

import sympy
n = int(input())
if sympy.isprime(n):
    print("Yes")
else:
    print("No")

使用python自带的sympy库中的isprime()函数仅需一行就能判断素数

方法三:优化了时间复杂度

import math
def is_prime(n):
    if n <= 1:
        return False
    if n <= 3:
        return True
    if n % 2 == 0 or n % 3 == 0:
        return False
    for i in range(5, int(math.sqrt(n)) + 1, 6):
        if n % i == 0 or n % (i + 2) == 0:
            return False
    return True

优化后的代码利用了以下观察:

1.所有的素数都是6的倍数加减1(除了2和3)。
2.如果n可以整除2或3,它肯定不是素数。
3.如果n不是2或3的倍数,并且不能整除6的倍数加减1的数,那么它也不是素数。所以可以只在6的倍数加减1的数中进行枚举,跳过其他数字。这样可以减少循环的次数,提高效率。 

 

到了这里,关于【Python】判断素数的三种方法以及for-else语句的介绍的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用java判断质数的三种方法

    方法一:质数只能被1和它本身整除  方法二:一个数总能写成“n = a * b”的形式,a和b之间一定有一个数不大于n/2  方法三:每一个整数都可以看做由两个数相乘得到,且每个乘数不大于原整数的平方根  

    2024年02月13日
    浏览(54)
  • java中判断对象类型的三种方法

    instanceof instanceof 是 Java 中的一个,用于判断一个对象是否是指定类型或其子类型的实例。它的使用格式为: 其中, 对象 是待判断的对象, 类型 是要判断的类型。 instanceof 的返回值是一个布尔值,如果对象是指定类型或其子类型的实例,则返回 true ,否则返回

    2024年02月03日
    浏览(48)
  • 【C语言】判断字符类型的三种方法

    🦄 个人主页 :修修修也 🎏 所属专栏 :C语言 ⚙️ 操作环境 : Visual Studio 2022 目录 一.字符的类型分类 1.ASCII的定义:  2.ASCII的产生原因是: 3.ASCII的内容: 二.字符类型判断相关库函数 1.isdigit(),用于判断字符是否为数字。 2. isalpha(),用于判断字符是否为字母。 3. isalnum(),用

    2024年02月06日
    浏览(50)
  • Python快速判断素数方法

    不废话,上代码: 传统的判断素数函数如下: 运行两个函数判断素数,得到其运行时间分别如下: 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.1525573730468

    2023年04月09日
    浏览(38)
  • java跳出for循环的三种常见方法

    这篇文章主要给大家介绍了关于java跳出for循环的三种常见方法,需要的朋友可以参考下 一、 break语句:使用break语句可以结束整个for循环的执行: 当 i 等于5时, break 语句会将控制流程跳出 for 循环从而停止后续代码的执行。 二、 return语句:如果你想要跳出当前方法并且停止

    2024年04月23日
    浏览(37)
  • js之删除对象属性的三种方法 & 判断对象中是否有某一属性的四种方法

    js之删除对象属性的三种方法 判断对象中是否有某一属性的四种方法 示例 1、基础版 2、进阶版 1、删除一个对象上的属性 1.1、delete 语法 delete 对象.属性名 1.2、es6之解构赋值 1.3、es6之反射 语法 Reflect.deleteProperty(对象,属性名) 2、判断对象中是否有某一属性的四种方法 2.1、

    2024年02月13日
    浏览(51)
  • python中的三种注释方法

    在编写程序中,使用注释不会影响程序代码的执行,但可以使得代码通俗易懂,便于维护, 在python,一共有三种注释方法 法一 单行注释,使用#注释,一般放于句首,或者放在代码语句之后,要被注释的代码之前 例如: 法二 对于多行注释,使用单行注释效率不高,所以用三

    2024年02月02日
    浏览(52)
  • python下载文件的三种方法

    Python开发中时长遇到要下载文件的情况,最常用的方法就是通过Http利用urllib或者urllib2模块,此外Python还提供了另外一种方法requests。 下面来看看三种方法是如何来下载文件的: 方法一: 方法二: 方法三: 看起来使用urllib最为简单,一句语句即可。当然你可以把urllib2缩写成

    2024年02月16日
    浏览(54)
  • Python图像处理的三种方法

     前言:最近在做微观电子器件的表面缺陷检测,用pyqt5做一个调用海康威视的gige接口的工业相机界面,官网上的代码是用的tkinter去做的界面,tkinter修改界面都是要在代码上进行修改有点麻烦,我在官网给的basicdemo.py上修改成pyqt的界面,后续可以直接用qtdesigner进行修改很方

    2024年02月16日
    浏览(48)
  • 【python】python实现杨辉三角的三种方法

    杨辉三角是一种数学图形,由数字排列成类似三角形的形状。它的每个数值等于它上方两个数值之和。这个三角形的形状可以用一个二维表格来表示,其中每个位置上的数值都是通过前一行的数值计算得到的。在这个三角形中,第一行只有一个数值1,第二行有两个数值1,第

    2024年02月07日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包