python求质数的3种方法

Python求质数的3种方法

在Python中,求质数的方法有很多,本文将会介绍其中的3种方法。

方法1:暴力枚举

暴力枚举是最基础的求质数方法。从2开始遍历到该数的平方根。如果能被整除,则说明该数不是质数,否则该数是质数。

示例:

def is_prime(num):
    if num < 2:
        return False
    for i in range(2, int(num ** 0.5) + 1):
        if num % i == 0:
            return False
    return True

for i in range(1, 101):
    if is_prime(i):
        print(i)

输出结果:

2 3 5 7 11 13 17 19 23 29 
31 37 41 43 47 53 59 61 67 
71 73 79 83 89 97

方法2:埃拉托色尼筛法

埃拉托色尼筛法是一种较为高效的求质数方法。该算法先将2到n的各个数分别列出来,然后按照从小到大的顺序,每次取出一个质数,然后将能被这个质数整除的数从列表中删除,继续进行下一次循环,直至没有质数为止。

示例:

def sieve_of_eratosthenes(n):
    is_prime = [True] * (n + 1)
    is_prime[0] = is_prime[1] = False
    for i in range(2, int(n ** 0.5) + 1):
        if is_prime[i]:
            for j in range(i * i, n + 1, i):
                is_prime[j] = False
    return [i for i in range(n + 1) if is_prime[i]]

print(sieve_of_eratosthenes(100))

输出结果:

[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]

方法3:欧拉筛法

欧拉筛法是一种更高效的求质数方法,它综合了埃氏筛法的思想和线性筛法的优点。该算法的核心是将合数仅且仅被最小质因子筛掉一次。

示例:

def euler_sieve(n):
    primes = []
    is_prime = [True] * (n + 1)
    for i in range(2, n + 1):
        if is_prime[i]:
            primes.append(i)
        for j in primes:
            if i * j > n:
                break
            is_prime[i * j] = False
            if i % j == 0:
                break
    return primes

print(euler_sieve(100))

输出结果:

[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]

以上就是本文介绍的Python求质数的3种方法,分别是暴力枚举、埃拉托色尼筛法和欧拉筛法。可以根据实际需要选择合适的方法进行使用。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python求质数的3种方法 - Python技术站

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

相关文章

  • Django模板报TemplateDoesNotExist异常(亲测可行)

    这里为大家详细讲解如何解决 Django 模板报 TemplateDoesNotExist 异常的问题。 问题描述 在 Django 项目开发中,我们经常需要使用 Django 模板来渲染 HTML 页面。但是当我们在使用模板时,有时会遇到如下异常提示: TemplateDoesNotExist: myapp/index.html 这个异常提示的意思是:Dj…

    python 2023年5月13日
    00
  • Python变量、数据类型、数据类型转换相关函数用法实例详解

    下面我将为你详细讲解“Python变量、数据类型、数据类型转换相关函数用法实例详解”。 Python变量的定义和使用 在 Python 中,变量是用来存储数据的容器,我们可以将其视为一个带有标签的盒子。定义变量时需要为其指定一个变量名,并为其赋值,可以使用等号=进行赋值操作。 # 定义一个名为 age 的变量 age = 18 # 定义一个名为 name 的…

    python 2023年5月14日
    00
  • python自动填写问卷星问卷以及提交问卷等功能

    我会为您详细讲解如何利用Python实现自动填写问卷星问卷并提交问卷的两种方法。 方法一:使用selenium库模拟人工操作 确认所要填写的问卷星问卷的URL,保存到一个变量中: url = "https://www.wjx.cn/…" 使用selenium库打开浏览器(需要预先安装好对应的浏览器驱动),访问问卷星问卷网址: from…

    python 2023年5月19日
    00
  • python cv2截取不规则区域图片实例

    下面是详细讲解“python cv2截取不规则区域图片实例”的完整攻略: 标题 介绍 本文主要介绍如何使用Python的OpenCV库来截取不规则区域的图片,可以帮助我们从图像中筛选出我们感兴趣的部分。 准备工作 在继续之前,我们需要确保已经正确安装了Python 3和OpenCV库。安装方法可以参考官方文档。如果安装过程中遇到任何问题,请参阅官方文档或搜索…

    python 2023年5月19日
    00
  • 详解Python PIL Image.show()方法

    Python PIL是一个强大的图像处理库,其中包含了许多函数和方法。其中,Image.show()方法是一个很常用的方法,它的作用是用系统默认的图像查看器展示当前图片。 方法介绍 PIL库的Image模块提供了显示图像的方法,在这个模块内,show()方法可以接收一个图像对象,并且用默认的可执行文件查看这个图像。 在使用show()方法之前,我们需要先安装…

    python-answer 2023年3月25日
    00
  • 使用Python中的线程进行网络编程的入门教程

    使用Python中的线程进行网络编程是一种广泛使用的技术,可以有效地提高程序的运行速度和并发性。以下是一个完整的攻略,介绍如何使用Python中的线程进行网络编程。 1. 理解网络编程和线程 首先,我们需要了解网络编程和线程的概念。网络编程是指使用计算机网络进行通信和数据交换的技术,而线程是操作系统中用于实现并发性的基本单位,它负责运行程序的不同部分,从而实…

    python 2023年6月6日
    00
  • Python Flask 搭建微信小程序后台详解

    我来详细讲解一下“Python Flask 搭建微信小程序后台详解”的完整攻略。 1. 什么是Python Flask Python Flask是一个轻量级的 Web 框架,它基于 Python 语言开发,被广泛应用于 Web 应用开发。 2. 搭建Python Flask项目 (1)安装Python环境由于Python Flask是基于Python语言开发…

    python 2023年5月23日
    00
  • 详解Python 编写有Python特色的循环

    当我们需要重复执行一段代码时,循环结构是非常有用的。Python中有多种循环结构,其中比较有Python特色的循环有for循环和while循环。下面分别介绍一下这两种循环的使用方法。 for循环 for循环是Python中比较常用的循环结构,它可以遍历任何序列,例如列表、元组、字符串等等。for循环的语法格式如下: for 变量 in iterable: 循…

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