python经典百题之打印素数

题目:找出1-N之间的所有素数,并输出所有素数.

素数又称质数,是指只能被1和自身整除的整数,即除了1和本身以外没有其他因数的正整数。例如,2、3、5、7、11等都是素数。任何大于1的正整数都可以由素数相乘得到,因此素数具有重要的数学意义。

方法一:暴力枚举法

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

def find_prime(n):
    prime_list = []
    for i in range(2, n):
        if is_prime(i):
            prime_list.append(i)
    return prime_list

优点:实现简单,容易理解。

缺点:时间复杂度较高,无法处理较大的素数范围。

方法二:优化枚举法

python 复制代码
def find_prime(n):
    prime_list = []
    for i in range(2, n):
        j = 2
        while j <= int(i ** 0.5):
            if i % j == 0:
                break
            j += 1
        if j > int(i ** 0.5):
            prime_list.append(i)
    return prime_list

优点:减少了部分重复计算,时间复杂度有所降低。

缺点:仍然无法处理较大的素数范围。

方法三:埃氏筛法

python 复制代码
def find_prime(n):
    prime_list = []
    is_prime = [True] * (n+1)
    for i in range(2, n+1):
        if is_prime[i]:
            prime_list.append(i)
            for j in range(i*i, n+1, i):
                is_prime[j] = False
    return prime_list

优点:时间复杂度较低,可以处理较大的素数范围。

缺点:空间复杂度较高,需要一个大小为(n+1)的数组来判断是否为素数。

方法四:欧拉筛法

python 复制代码
def find_prime(n):
    prime_list = []
    is_prime = [True] * (n+1)
    for i in range(2, n+1):
        if is_prime[i]:
            prime_list.append(i)
        for j in range(len(prime_list)):
            if i * prime_list[j] > n:
                break
            is_prime[i * prime_list[j]] = False
            if i % prime_list[j] == 0:
                break
    return prime_list

优点:时间复杂度较低,空间复杂度较低。

缺点:实现较为复杂,需要对已知素数进行筛选。

相关推荐
2301_812539673 分钟前
CSS如何引入CSS形状生成器_通过自定义属性实现图形化样式
jvm·数据库·python
吴声子夜歌15 分钟前
Java——接口的细节
java·开发语言·算法
阿拉金alakin17 分钟前
深入理解 Java 锁机制:CAS 原理、synchronized 优化与主流锁策略全总结
java·开发语言
myheartgo-on21 分钟前
Java—方 法
java·开发语言·算法·青少年编程
雨落在了我的手上26 分钟前
如何学习java?
java·开发语言·学习
m0_6091604940 分钟前
Golang怎么实现数据库连接重试_Golang如何在启动时重试连接直到数据库就绪【技巧】
jvm·数据库·python
花米徐1 小时前
技术洞察精选 | 2026年4月28日 — 5月4日
后端·python·flask
神仙别闹1 小时前
基于 C# OpenPGP 的文件管理系统
开发语言·c#
宝贝儿好1 小时前
【LLM】第三章:项目实操案例:智能输入法项目
人工智能·python·深度学习·算法·机器人
m0_624578592 小时前
如何在phpMyAdmin中导入GZIP压缩格式文件_加速传输并突破文件大小限制
jvm·数据库·python