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

yizhihongxing

确切判断一个数是否为素数一直是程序设计中的一个经典问题。接下来我们将介绍两种使用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数学建模之整数规划

    下面是详细讲解“浅谈Python数学建模之整数规划”的完整攻略。 1. 什么是整数规划 整数规划是一种数学优化问题,它要求满足一约束条件的情况下,找到一组整数解,得目标函数取得最大或最小值。整数规划在实际用中经常用于生产调度、资源分配、物流配送等领域。 2. Python实现整数规划 Python中多种可以实整数规划,以下是其中两种常用方法。 2.1 使用P…

    python 2023年5月14日
    00
  • python之基数排序的实现

    Python实现基数排序算法 基数排序算法是一种非比较排序算法,它的基本思是将待排序的元素按照位数切割成不同的数字,然后按每个位数分别进行排序。具体步骤如下: 找出待排序数组中最大的数字,并确定其位数。 从最低位开始,按照每个位数进行排序。具体做法是,将待排序数组中的数字按照当前位数的值进行分组,然后按照每个组的顺序重新排列数组。 重复上述操作,直到将所有的…

    python 2023年5月14日
    00
  • 如何利用Matplotlib库绘制动画及保存GIF图片

    下面是“如何利用Matplotlib库绘制动画及保存GIF图片”的完整攻略。 简介 Matplotlib是Python语言中一个著名的绘图库。该库提供了完整的2D绘图功能,支持多种绘图类型。其中,动画绘图是Matplotlib工具集中的一部分。在本文中,我们将会讲解如何使用Matplotlib库绘制动画并保存为GIF格式的图片。 准备工作 在开始本教程之前,…

    python 2023年6月3日
    00
  • Django ValuesQuerySet转json方式

    下面是关于”Django ValuesQuerySet转json方式”的详细讲解。 什么是 ValuesQuerySet 在Django中,QuerySet (查询集) 是代表从数据库中获取的一组对象的集合。 ValuesQuerySet 是 QuerySet 的一种变体,它仅返回指定的字段的值而不返回对象本身,该值代表一个字典中的键值对。您可以使用 val…

    python 2023年6月3日
    00
  • Python实现聪明的尼姆游戏

    Python实现聪明的尼姆游戏攻略 简介 聪明的尼姆游戏是一种常见的博弈游戏,它是两个人进行的,有两堆各自拥有一定数量的物品(如石子),两人轮流取走某一堆中的任意个物品,或同时从两堆中取走相同数量的物品,取走最后一个物品的人胜利。本攻略将以 Python 语言为例,介绍如何实现聪明的尼姆游戏。 实现步骤 1.定义函数 首先,我们需要定义一个函数 smart_…

    python 2023年6月3日
    00
  • Python 生成器表达式

    生成器表达式是python中非常重要的概念,可以用来快速生成集合中的元素而无需占用大量内存,是处理大数据集的必备工具。下面分别从生成器表达式的定义、语法和示例详细讲解Python 生成器表达式的使用方法: 定义 Python生成器表达式是一种用来生成可迭代对象(推荐是迭代器)的简洁便捷的方法,可以在创建数据集时使用,而无需一开始将整个集合装入内存中。当使用生…

    python-answer 2023年3月25日
    00
  • python爬虫线程池案例详解(梨视频短视频爬取)

    当我们需要爬取大量数据时,使用Python爬虫和线程池可以提高爬取效率。本文将介绍如何使用Python爬虫和线程池来爬取梨视频短视频。以下是详细步骤和示例。 Python爬虫线程池案例详解(梨视频短视频爬取) 本文将介绍如何使用Python爬虫和线程池来爬取梨视频短视频。我们将使用requests和BeautifulSoup库来获取和解析网页,使用线程池来提…

    python 2023年5月13日
    00
  • python分析网页上所有超链接的方法

    要分析网页上的所有超链接,可以使用 Python 中的 requests 库获取 HTML 页面,再使用 BeautifulSoup 库解析 HTML 代码,从而获取所有的超链接信息。 下面是详细的Python代码,可以实现获取一个网站上的所有超链接: import requests from bs4 import BeautifulSoup url = ‘…

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