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

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

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

相关推荐
molaifeng1 天前
像搭积木一样理解 Golang AST
开发语言·后端·golang
SystickInt1 天前
C语言 UTC时间转化为北京时间
c语言·开发语言
技术路上的探险家1 天前
vLLM常用启动参数的详细解释
python·大模型·qwen·vllm
黎雁·泠崖1 天前
C 语言动态内存管理进阶:常见错误排查 + 经典笔试题深度解析
c语言·开发语言
WHJ2261 天前
记录解决jupyter打开闪退
ide·python·jupyter
老歌老听老掉牙1 天前
1V1砂轮轮廓的几何建模与可视化分析
python·sympy·砂轮
成为大佬先秃头1 天前
渐进式JavaScript框架:Vue 过渡 & 动画 & 可复用性 & 组合
开发语言·javascript·vue.js
嘻嘻嘻开心1 天前
Java IO流
java·开发语言
浔川python社1 天前
浔川社团关于福利发放方案再次调整的征求意见稿公告
python
玄同7651 天前
Python 真零基础入门:从 “什么是编程” 到 LLM Prompt 模板生成
人工智能·python·语言模型·自然语言处理·llm·nlp·prompt