Python判断素数的3种方法及for-else语句的用法介绍

 更新时间:2024年05月03日 11:57:09   作者:Zaly.  
素数又叫质数,指的是>1的整数中,只能被1和这个数本身整除的数,这篇文章主要给大家介绍了关于Python判断素数的3种方法及for-else语句的用法介绍的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下

题目

输入一个数,如果是素数就输出"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的数中进行枚举,跳过其他数字。这样可以减少循环的次数,提高效率。 

附:打印素数

方法一:

1、打印指定范围内的素数

def sushu3(c):
    import math
    m = 2
    List = []
    while m < c:
        j = 2
        # 只要从2判断到根号m,若m不能被其中的任何一个数整除,则m为素数
        while j <= math.sqrt(m):
            if m % j == 0:
                break
            j = j + 1
        if (j > math.sqrt(m)):
            List.append(m)
        m = m + 1
    print(f"{c}以内的素数:{List}")
    
 # 调用方法sushu3方法,打印100以内的素数
if __name__ == '__main__':
    sushu3(100)

方法二:

2、打印指定区间内的素数

def sushu4():
    Min = int(input("请输入起始值:"))
    Max = int(input("请输入终止值:"))
    List = []
    # 循环遍历指定区间内的数
    for i in range(Min, Max + 1):
        if i > 1:
           # 除了1和本身以外的数,如果能被除则break退出
            for j in range(2, i):
                if (i % j) == 0:
                    break
            # 若不能被1和本身的数除则追加到List列表
            else:
                List.append(i)
    print(f"{Min}~{Max}区间内的素数有:{List}")

总结

到此这篇关于Python判断素数的3种方法及for-else语句的用法介绍的文章就介绍到这了,更多相关Python判断素数及for-else语句内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • PyQtGraph在pyqt中的应用及安装过程

    PyQtGraph在pyqt中的应用及安装过程

    这篇文章主要介绍了PyQtGraph在pyqt中的应用,文中给大家介绍了pyqtgraph的主要用途及PyQtGraph的安装过程,需要的朋友可以参考下
    2019-08-08
  • python用pyecharts画矩形树图实例

    python用pyecharts画矩形树图实例

    大家好,本篇文章主要讲的是python用pyecharts画矩形树图实例,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-01-01
  • python实现决策树分类

    python实现决策树分类

    这篇文章主要为大家详细介绍了python实现决策树分类的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-08-08
  • Python安装whl文件过程图解

    Python安装whl文件过程图解

    这篇文章主要介绍了Python安装whl文件过程图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02
  • python3+selenium获取页面加载的所有静态资源文件链接操作

    python3+selenium获取页面加载的所有静态资源文件链接操作

    这篇文章主要介绍了python3+selenium获取页面加载的所有静态资源文件链接操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-05-05
  • Flask-WTF表单的使用方法

    Flask-WTF表单的使用方法

    这篇文章主要介绍了Flask-WTF表单的使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • 四步教你学会打包一个新的Python模块

    四步教你学会打包一个新的Python模块

    当你安装应用程序时,通常是安装一个软件包,其中包含应用程序的可执行代码和重要文件。在 Linux上,软件一般被打包成RPM或DEB等格式,然而几乎每天都有新的Python模块发布,因此你很容易遇到一个尚未打包的Python模块。本文教你四步打包一个新的Python模块
    2022-09-09
  • 基于Python实现傻瓜式GIF制作工具

    基于Python实现傻瓜式GIF制作工具

    有没有什么内容形式,比小视频更小,比普通图片更丰富?有,GIF动态图就是其中一种形式。本文将为大家介绍如何通过Python实现一个傻瓜式的gif生成工具,感兴趣的可以了解一下
    2021-12-12
  • Python generator生成器和yield表达式详解

    Python generator生成器和yield表达式详解

    这篇文章主要介绍了Python generator生成器和yield表达式详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • python 使用tkinter+you-get实现视频下载器

    python 使用tkinter+you-get实现视频下载器

    这篇文章主要介绍了python 使用tkinter+you-get实现视频下载器,帮助大家方便的下载视频资源,感兴趣的朋友可以了解下
    2020-11-11

最新评论