python判断所输入的任意一个正整数是否为素数的两种方法

确切判断一个数是否为素数一直是程序设计中的一个经典问题。接下来我们将介绍两种使用python实现判断正整数是否为素数的方法。

方法一:暴力枚举法

所谓暴力枚举法,即遍历2到n-1之间的所有自然数,如果n能被其中任何一个数整除,则n就不是素数。该方法的实现代码如下:

def is_prime(n):
    if n < 2:
        return False
    for i in range(2, n):
        if n % i == 0:
            return False
    return True

代码中首先判断输入的数是否小于2,因为从2开始才有素数的概念,如果小于2直接返回False。接着用for循环遍历2到n-1之间的所有自然数,依次判断n能否被其中某个数整除,如果整除则返回False,说明n不是素数。如果for循环结束时仍然没有判断出n不是素数,则返回True,说明n是素数。

接下来让我们试一下使用该方法来判断100和101是否为素数:

print(is_prime(100)) # False
print(is_prime(101)) # True

运行输出结果:

False
True

结果表明了暴力枚举法可以非常准确地判断一个正整数是否为素数。

方法二:试除法

方法一虽然准确,但是效率非常低,时间复杂度为O(n),当输入的数非常大时,运算时间会非常长。而试除法是一种更加高效的判断正整数是否为素数的方法。该方法判断一个数是否为素数的原理和暴力枚举法一样,只不过试除法判断的范围不是2到n-1,而是2到n的平方根。因为如果一个数能被大于它平方根的数整除,那么小于它平方根的数就会同样能够整除。该方法的实现代码如下:

import math

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

代码中首先判断输入的数是否小于2,因为从2开始才有素数的概念,如果小于2直接返回False。接着用for循环遍历2到n的平方根之间的所有自然数,依次判断n能否被其中某个数整除,如果整除则返回False,说明n不是素数。如果for循环结束时仍然没有判断出n不是素数,则返回True,说明n是素数。在代码中使用了math模块中的sqrt函数来计算n的平方根。

接下来让我们试一下使用该方法来判断100000007和100000019是否为素数:

print(is_prime(100000007)) # True
print(is_prime(100000019)) # True

运行输出结果:

True
True

结果表明了试除法可以非常准确地判断一个正整数是否为素数,在效率上也要远好于暴力枚举法。

以上是两种使用python实现判断正整数是否为素数的方法和使用示例。需要注意的是,如果要判断大量位数比较大的数是否为素数,还需要使用更加优化的算法,否则运算时间将会非常长。希望本文能够帮助到大家。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python判断所输入的任意一个正整数是否为素数的两种方法 - Python技术站

(0)
上一篇 2023年6月3日
下一篇 2023年6月3日

相关文章

  • Python 常见的配置文件写法梳理汇总

    使用Markdown格式,以下是Python常见配置文件的写法梳理汇总完整攻略。 Python常见配置文件写法梳理汇总 1. INI 文件 INI 文件是最常用的配置文件之一,它通常被用于Windows操作系统的应用程序中。INI 文件本质上是一个键值对集合,由多个节组成,每个节下面可以有多个键值对。(示例代码见下) ; Python配置文件示例 [data…

    python 2023年6月3日
    00
  • Python json模块常用方法小结

    下面就详细讲解一下“Python json模块常用方法小结”的攻略。 为什么需要json模块 在Python中,我们经常需要将Python对象序列化为JSON格式的字符串或将JSON字符串反序列化为Python对象。为了方便实现这个过程,Python提供了一个标准的json模块,它可以实现Python对象与JSON字符串之间的相互转换。 常用方法 json.…

    python 2023年6月3日
    00
  • python multiprocessing 多进程并行计算的操作

    Python multiprocessing 模块提供了在单个计算机的多个 CPU 核上运行并行计算的能力。多进程并行计算是将一个任务分解成多个小任务并将这些小任务同时计算,以加速完成整个任务的时间。 下面是使用 Python multiprocessing 模块进行多进程并行计算的完整攻略: 1. 导入模块 首先需要导入 multiprocessing 模…

    python 2023年5月19日
    00
  • 对python生成业务报表的实例详解

    对Python生成业务报表的实例详解 Python是一门功能强大且易于上手的编程语言,它可以方便的帮助我们生成各种格式的业务报表。下面我们将介绍一些基本的方法和技巧,以便您在使用Python来生成业务报表时更加得心应手。 1. 安装必要的库 在生成业务报表之前,我们需要安装一些必要的Python库,以便在编写代码时调用。 常用的库包括:pandas、nump…

    python 2023年5月19日
    00
  • 对python中GUI,Label和Button的实例详解

    对 Python 中 GUI 的实例详解 GUI 是什么? GUI(Graphical User Interface / 图形用户界面) 是一类计算机程序的用户界面,可以让用户通过图形化的方式与程序进行交互。Python 提供了多个库和工具可以方便地创建 GUI,如 Tkinter、PyQt、wxPython 等。 Tkinter 简介 Tkinter 是 …

    python 2023年5月18日
    00
  • Python3访问并下载网页内容的方法

    针对“Ilona-Blog”网站,演示如何用Python3访问并下载网页内容的方法: 获取网页内容 我们可以使用Python中的requests库来访问获取网页内容,我们需要做的是: 安装requests:如果你尚未安装它,运行!pip install requests即可安装。 获取网页内容:我们可以使用requests库中的get()函数获取网页内容,其…

    python 2023年6月3日
    00
  • python开发利器之ulipad的使用实践

    Python开发利器之Ulipad的使用实践 Ulipad是一个跨平台的Python编辑器,使用Python和wxPython编写。它的特点是打开速度快、插件多、配置简便。本文将详细介绍Ulipad的使用实践。 安装 Ulipad官方网站为:http://ulipad.sourceforge.net/。你可以从下载页面下载安装文件,并按照安装向导完成基本安装…

    python 2023年5月20日
    00
  • python爬虫学习笔记之pyquery模块基本用法详解

    Python爬虫是一种常见的网络爬虫技术,可以用于从网站上获取数据。PyQuery是一个Python库,它提供了类似于jQuery的语法,可以方便地解析HTML和XML文档。以下是Python爬虫学习笔记之PyQuery模块基本用法详解,包含两个示例。 示例1:解析HTML文档 以下是一个示例,可以使用PyQuery解析HTML文档: from pyquer…

    python 2023年5月15日
    00
合作推广
合作推广
分享本页
返回顶部