python求质数的3种方法

yizhihongxing

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日

相关文章

  • 在Python中对Hermite_e系列进行微分

    在Python中对Hermite_e系列进行微分的完整攻略,将给出如下的说明: 前置知识 在了解对Hermite_e系列进行微分之前,需要具备如下的前置知识: Python基础语法知识 NumPy库的基础使用方法 SymPy库的基础使用方法 Hermite_e系列及其相关概念的基础理解 需要注意的是,其中Hermite_e系列的相关概念可以通过查阅相关资料了…

    python-answer 2023年3月25日
    00
  • pyinstaller打包opencv和numpy程序运行错误解决

    以下是关于“pyinstaller打包opencv和numpy程序运行错误解决”的完整攻略: 问题描述 在使用 PyInstaller 打包包含 OpenCV 和 NumPy 库的 Python 程序时,可能会出现行错误的情况。本文将介绍如何解决这些错误。 解决方法 1. 安装Installer 首先,需要安装 PyInstaller。可以使用 pip 命令…

    python 2023年5月13日
    00
  • Python的进程及进程池详解

    Python的进程及进程池详解 在Python中,进程是一种执行计算机程序的方式。它们是操作系统分配资源的基单位。本文将为您提供一个完整攻略,详细讲解Python的进程进程池,包括进程的创建启动停止、等待和进程池的使用,并提供两个示例说明。 1. 进的创建、启动、停止和等待 在Python中可以使用multiprocessing模块创建和管理进程。以下是一个…

    python 2023年5月14日
    00
  • 基于Python实现烟花效果的示例代码

    下面是基于Python实现烟花效果的示例代码的完整攻略。 背景介绍 烟花效果指的是在屏幕上绽放出一个漂亮的花火效果,常常用于游戏、动态壁纸等场景。Python是一种强大的编程语言,可以用来实现各种各样的应用程序,其中也包括烟花效果。 实现步骤 下面是实现烟花效果的基本步骤。 导入必要的模块。实现烟花效果需要用到turtle模块和random模块,因此需要先导…

    python 2023年5月19日
    00
  • python中open函数的基本用法示例

    Python中open函数的基本用法示例 在Python中,我们可以使用open()函数来打开文件,进行读写操作。open()函数使用起来非常简单,本篇攻略将对open()函数进行详细讲解。 语法格式: open(file, mode=’r’, buffering=-1, encoding=None, errors=None, newline=None, c…

    python 2023年6月5日
    00
  • python中的闭包用法实例详解

    让我给您详细讲解“python中的闭包用法实例详解”。 什么是闭包? 闭包是指函数对象可以访问其词法作用域外的变量的能力。具体来说,闭包是一个嵌套函数,并且它可以引用其环境的变量。在Python中,闭包是一种函数式编程方式,它可以让我们使用高阶函数和装饰器。 闭包的基本语法 在Python中,闭包函数的基本语法如下: def outer_function()…

    python 2023年5月18日
    00
  • 【11个适合毕设的Python可视化大屏】用pyecharts开发拖拽式可视化数据大屏

    你好,我是@马哥python说,一枚10年程序猿。 一、效果演示 以下是我近期用Python开发的原创可视化数据分析大屏,非常适合毕设用,下面逐一展示:(以下是截图,实际上有动态交互效果哦) 以下大屏均为@马哥python说的个人原创,请勿转载。 1.1 影视剧分析大屏 1.2 豆瓣电影分析大屏A 1.3 豆瓣电影分析大屏B 1.4 58同城房源分析大屏 1…

    python 2023年5月10日
    00
  • Python装饰器原理与用法分析

    Python装饰器原理与用法分析 装饰器概述 Python中,装饰器是一种语法糖,用于动态地修改函数或类的行为。换句话说,装饰器是一种将函数或类作为参数,并且返回修改后的函数或类的函数。 装饰器的主要方式是使用@符号及其后面的函数名或类名,将目标函数或类传递给装饰器函数,如下所示: @decorator_func def func(): pass 该示例中,…

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