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日

相关文章

  • re模块的正则匹配的表达式详解

    re模块的正则匹配的表达式详解 什么是正则表达式 在计算机科学中,正则表达式是一种描述字符串匹配模式的方法。正则表达式通常被用来检索或替换符合特定模式的文本。 re模块的基本使用 Python中提供了re模块,可以使用re模块的方法来对字符串进行正则匹配 re.match() 函数 re.match()函数用于匹配字符串的开头,如果字符串的开头不符合正则表达…

    python 2023年6月3日
    00
  • pip报错“ModuleNotFoundError: No module named ‘setuptools’”怎么处理?

    当使用 pip 安装 Python 包时,可能会遇到 “ModuleNotFoundError: No module named ‘setuptools'” 错误。这个错误通常是由于缺少 setuptools 模块或 setuptools 模块版本不兼容导致的。以下是详细讲解 pip 报错 “ModuleNotFoundError: No module na…

    python 2023年5月4日
    00
  • python常见排序算法基础教程

    下面是关于“Python常见排序算法基础教程”的完整攻略。 1. 排序算法简介 排序算法是一种将一组数据按照一定规则进行排列的算法。在Python中,常见的算法包括冒泡排序、选择排序、插入排序、快速排序、归并排序等。 2. Python实现常见排序算法 2.1 冒泡排序 冒泡排序是一种通过交换相邻元素来排序的算法。Python中,我们可以使用以下代码实现冒泡…

    python 2023年5月13日
    00
  • 如何使用Python在MySQL中使用视图?

    当使用Python与MySQL交互时,可以使用视图来简化复杂的查询。视图是一种虚拟表,它是基于一个或多个表的查询结果。以下是使用在MySQL中使用视图的整略,包括创建视图、使用视图和删除视图等步骤同时,还提供了两个示例来演示如何在Python中使用MySQL视图。 创建视图 在Python中使用MySQL视图之前,需要先在MySQL中创建视图。可以使用以下代…

    python 2023年5月12日
    00
  • Python通过2种方法输出带颜色字体

    当我们想在Python中输出有颜色的字体时,在控制台输出语句后,可以使用一些转义字符来控制字体的颜色和显示格式。而在Python中,有两种输出颜色字体的方式,具体如下: 1. 使用ANSI转义字符 在控制台输出时可以使用ANSI转义字符来实现颜色字体的输出。在Python中可以使用print函数来输出带有ANSI转义字符的字符串,下面是一个使用ANSI转义字…

    python 2023年6月5日
    00
  • Python实现根据日期获取当天凌晨时间戳的方法示例

    下面是详细的Python实现根据日期获取当天凌晨时间戳的方法示例的攻略: 根据日期获取当天凌晨时间戳的方法 在Python中,获取当天凌晨时间戳的方法有多种,这里介绍其中常用的两种方法: 方法一:使用datetime和time模块 首先,我们需要导入相关的模块: import datetime import time 接着,我们可以使用datetime.da…

    python 2023年6月2日
    00
  • Python字典dict常用方法函数实例

    Python字典(dict)常用方法函数实例 1. 创建字典 方法一:通过大括号创建字典 d1 = {‘name’: ‘张三’, ‘age’: 18, ‘gender’: ‘男’} 方法二:通过 dict()方法创建字典 d2 = dict(name=’李四’, age=20, gender=’男’) 2. 字典的增删改查 2.1 字典的添加 d = {‘n…

    python 2023年5月13日
    00
  • 使用Python做垃圾分类的原理及实例代码附源码

    使用Python做垃圾分类的原理及实例代码附源码 在本攻略中,我们将介绍使用Python做垃圾分类的原理及实例代码,并提供一些示例。 原理 垃圾分类是指将生活垃圾按照一定的分类标准进行分类,以便于垃圾的回收和再利用。使用Python做垃圾分类的原理是通过机器学习算法对垃圾进行分类。 具体来说,我们可以使用Python的机器学习库scikit-learn对垃圾…

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