写一个python程序,找出1000以内的质数

这是一道常考的题,大家一定得学会。

解题思路:

需要理解质数的定义。质数是大于1的自然数,除了1和它本身外没有其他因数。所以,我需要生成2到1000之间的所有数,然后检查每个数是否是质数。

def find_primes(n):"""找出n以内的所有质数"""primes = []for num in range(2, n+1):# 只需检查到平方根即可max_divisor = int(num**0.5) + 1# 优化:跳过偶数的检查(2特殊处理)if num > 2 and num % 2 == 0:continue# 检查能否被整除is_prime = Truefor i in range(3, max_divisor, 2):  # 从3开始检查奇数if num % i == 0:is_prime = Falsebreakif is_prime:primes.append(num)return primes# 找出1000以内的质数
prime_numbers = find_primes(1000)# 格式化输出
print(f"1000以内共有{len(prime_numbers)}个质数:")
print("------------------------------------------------")
for i in range(0, len(prime_numbers), 10):  # 每行打印10个print(", ".join(f"{num:3}" for num in prime_numbers[i:i+10]))

打印结果:

图片

程序特点

  1. 高效算法

    • 跳过偶数的检查(2特殊处理)

    • 只需检查到平方根即可

    • 使用步长2跳过偶数因子

  2. 优化逻辑

    # 传统写法 vs 优化写法
    # 传统:检查2~num-1的所有数
    # 优化:检查3~√num的奇数(效率提升约10倍)
    
  3. 可视化输出

    • 显示总质数数量

    • 每行整齐打印10个质数

    • 数字右对齐保证格式美观

  4. 验证正确性

    • 1000以内应有168个质数

    • 最后一个质数是997

    • 包含所有经典质数(如2, 3, 5, 7, 11等)

性能对比

方法

时间复杂度

1000以内耗时

基础算法

O(n²)

~3ms

优化算法

O(n√n)

~0.3ms

扩展功能建议

  1. 添加质数验证函数

  2. 实现埃拉托斯特尼筛法

  3. 计算质数间隔分布

  4. 查找孪生质数对

  5. 输出质数分布直方图

    广告

    请在微信客户端打开

    60岁学徒竟是隐藏大佬

    都市 81集

    去观看

如果需要更高性能的版本,可以使用筛法实现:

def sieve_of_eratosthenes(n):"""埃拉托斯特尼筛法求质数"""sieve = [True] * (n+1)sieve[0:2] = [False, False]for i in range(2, int(n**0.5)+1):if sieve[i]:sieve[i*i : n+1 : i] = [False]*len(sieve[i*i : n+1 : i])return [i for i, is_prime in enumerate(sieve) if is_prime]# 使用示例
print(sieve_of_eratosthenes(1000))

图片

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/28373.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

软考-数据库开发工程师-3.1-数据结构-线性结构

第3章内容比较多,内容考试分数占比较大,6分左右 线性表 1、线性表的定义 一个线性表是n个元素的有限序列(n≥0),通常表示为(a1,a2, a3,…an). 2、线性表的顺序存储(顺序表) 是指用一组地址连续的存储单元依次存储线性表中的数据元…

【技术点】RAG

本文非自己原创,只是学习过程中资料的总结合并。具体来自于以下链接 https://cloud.google.com/use-cases/retrieval-augmented-generation 一文读懂:大模型RAG(检索增强生成)含高级方法 RAG基础 定义 RAG(检索增…

Pytorch的一小步,昇腾芯片的一大步

Pytorch的一小步,昇腾芯片的一大步 相信在AI圈的人多多少少都看到了最近的信息:PyTorch最新2.1版本宣布支持华为昇腾芯片! 1、 发生了什么事儿? 在2023年10月4日PyTorch 2.1版本的发布博客上,PyTorch介绍的beta版本…

Varjo XR-4 混合现实驾驶仿真解决方案

企业级虚拟与混合现实解决方案提供商Varjo今日宣布,其XR-4系列设备已与VI-grade的车辆开发平台VI-WorldSim实现兼容。自2025.1版本起,VI-WorldSim将通过虚幻引擎5的OpenXR接口支持Varjo XR-4系列头显。 VI-WorldSim是一个集成式图形环境,可加…

STM32单片机芯片与内部114 DSP-变换运算 实数 复数 FFT IFFT 不限制点数

目录 一、ST 官方汇编 FFT 库(64点, 256 点和 1024 点) 1、cr4_fft_xxx_stm32 2、计算幅频响应 3、计算相频响应 二、复数浮点 FFT、IFFT(支持单精度和双精度) 1、基础支持 2、单精度函数 arm_cfft_f32 3、双精…

【橘子python】在vscode中配置py3

一、简介 这个故事来源于一个奸商,我在某购物平台买了一个pyCharm的那啥码,承诺永不过期,我刚用了不到两个月就拉了。然后再去找商家,发现已经注销跑路了。属实是可恶。 那没办法了,那就用vscode吧,该说不…

LangChain-08 Query SQL DB 通过GPT自动查询SQL

我们需要下载一个 LangChain 官方提供的本地小数据库。 安装依赖 SQL: https://raw.githubusercontent.com/lerocha/chinook-database/master/ChinookDatabase/DataSources/Chinook_Sqlite.sql Shell: pip install --upgrade --quiet langchain-core langchain-community la…

电脑技巧:硬件检测工具 HWiNFO 8.16版本更新功能介绍

目录 一、版本8.16更新说明 二、安装说明 三、使用说明 HWiNFO是一个专业的系统信息检测工具,支持最新的技术和标准,可检查计算机硬件的所有信息。HWiNFO 主要可以显示出处理器、主板及芯片组、PCMCIA接口、BIOS版本、内存等信息,另外HWiN…

【一.大模型认知与核心原理篇】【3. GPT解密:大模型背后的核心技术】

各位科技爱好者,今天咱们要干一票大的——把GPT这个AI界的当红顶流扒个底朝天。你以为ChatGPT会聊天就是它的全部能耐?Too young!这货肚子里藏的可是价值百亿美金的黑科技。咱们不整那些虚头巴脑的概念,直接上手拆解它的技术内脏,让你看看这个每天被调戏的聊天机器人,到底…

VisActor/VTable - 自定义图标

在 VTable 中,我们可以使用自定义图标功能来提高表格的可读性和视觉效果。可以通过 icon 和 headerIcon 来分别分别配置表头及 body 显示的单元格图标: headerIcon 表头单元格图标配置,它可以帮助我们设置表头的图标样式。配置项根据 Column…

transformer稀疏注意力机制的发展

2017年谷歌发表史诗级的论文Attention is All you need提出Transformer,一种全新的神经网络。 存在一个问题训练的时候每个字都要训练,每增加一个token,算力需求是平方的往上翻的,输入10000个token,苏姚计算10000*1000…

不同类型光谱相机的技术差异比较

一、波段数量与连续性 ‌多光谱相机‌ 波段数:通常4-9个离散波段,光谱范围集中于400-1000nm‌。 数据特征:光谱呈阶梯状,无法连续覆盖,适用于中等精度需求场景(如植被分类)‌。 ‌高光谱相机…

Redis——缓存穿透、击穿、雪崩

缓存穿透 什么是缓存穿透 缓存穿透说简单点就是大量请求的 key 根本不存在于缓存中,导致请求直接到了数据库上,根本没有经过缓存这一层。举个例子:某个黑客故意制造我们缓存中不存在的 key 发起大量请求,导致大量请求落到数据库…

张岳教授:语言模型推理与泛化研究 | ICLR 2025 特邀报告与团队专场

点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入! AITIME 01 ICLR 2025预讲会特邀报告 AITIME 02 ICLR 2025预讲会西湖大学张岳老师实验室专场 01 AI生成文本的自动化检测 Glimpse: Enabling White-Box Methods to Use Proprietary Models for Zero-Shot LLM-Ge…

javaweb自用笔记:Vue

Vue 什么是vue vue案例 1、引入vue.js文件 2、定义vue对象 3、定义vue接管的区域el 4、定义数据模型data 5、定义视图div 6、通过标签v-model来绑定数据模型 7、{{message}}直接将数据模型message展示出来 8、由于vue的双向数据绑定,当视图层标签input里的…

常见webshell工具的流量特征

1、蚁剑 1.1、蚁剑webshell静态特征 蚁剑中php使用assert、eval执行;asp只有eval执行;在jsp使用的是Java类加载(ClassLoader),同时会带有base64编码解码等字符特征。 1.2、蚁剑webshell动态特征 查看流量分析会发现…

C高级linux

#!/bin/bash# 提示用户输入成绩 echo "请输入一个成绩(0 - 100):" read score# 检查输入是否为有效的数字 if ! [[ $score ~ ^[0-9]$ ]]; thenecho "输入无效,请输入一个有效的数字。"exit 1 fi# 检查成绩是否…

牙齿缺陷分割数据集labelme格式2495张4类别

数据集格式:labelme格式(不包含mask文件,仅仅包含jpg图片和对应的json文件) 图片数量(jpg文件个数):2495 标注数量(json文件个数):2495 标注类别数:4 标注类别名称:["Tooth","Caries","C…

EasyDSS视频推拉流/直播点播平台:Mysql数据库接口报错502处理方法

视频推拉流/视频直播点播EasyDSS互联网直播平台支持一站式的上传、转码、直播、回放、嵌入、分享功能,具有多屏播放、自由组合、接口丰富等特点。平台可以为用户提供专业、稳定的直播推流、转码、分发和播放服务,全面满足超低延迟、超高画质、超大并发访…

spring boot + vue 搭建环境

参考文档:https://blog.csdn.net/weixin_44215249/article/details/117376417?fromshareblogdetail&sharetypeblogdetail&sharerId117376417&sharereferPC&sharesourceqxpapt&sharefromfrom_link. spring boot vue 搭建环境 一、浏览器二、jd…