当前位置: 首页 > news >正文

Python案例--100到200的素数

一、问题描述

素数(Prime Number)是指在大于1的自然数中,除了1和它本身以外不再有其他因数的数。判断一个数是否为素数是计算机科学和数学中的一个经典问题。本实例的目标是找出101到200之间的所有素数,并统计它们的数量。

二、程序分析

判断一个数是否为素数的基本方法是:用一个数分别去除2到该数的平方根(sqrt(这个数))。如果在这个范围内找到一个数能够整除它,则表明该数不是素数;反之,如果没有任何一个数能够整除它,则该数是素数。这种方法的效率较高,因为一个合数(非素数)必然有一个小于或等于其平方根的因数。

此外,使用else语句可以进一步简化代码逻辑。在for循环中,如果没有任何break语句被执行,则else块将被执行。这可以用来判断一个数是否为素数。

三、Python实现

以下是基于上述分析的Python程序实现:

import mathprint("正在查找101到200之间的所有素数(使用基本方法):")# 基本方法
prime_count = 0
for i in range(101, 201):  # 从101到200flag = 0for j in range(2, round(math.sqrt(i)) + 1):  # 检查从2到sqrt(i)if i % j == 0:  # 如果能被整除,则不是素数flag = 1breakif flag == 0:  # 如果没有找到能整除的数,则是素数print(i)prime_count += 1print("\n101到200之间的素数总数为:", prime_count)

四、代码解析

1. 基本方法

(1)外层循环
for i in range(101, 201):
  • 遍历101到200之间的所有整数,逐一判断每个数是否为素数。

(2)内层循环
for j in range(2, round(math.sqrt(i)) + 1):
  • 对于每个数i,从2开始,检查到sqrt(i)(取平方根并向上取整)。这是因为如果一个数i不是素数,它必然有一个因数小于或等于其平方根。

(3)判断是否为素数
if i % j == 0:flag = 1break
  • 如果i能被j整除(即i % j == 0),则i不是素数,设置标志变量flag为1,并退出内层循环。

(4)输出素数
if flag == 0:print(i)prime_count += 1
  • 如果内层循环结束后,flag仍为0,说明i是素数,输出该数,并将素数计数器prime_count加1。

五、运行结果展示

运行上述代码,输出结果如下:

从运行结果可以看出:

  1. 在101到200之间,共有21个素数。

  2. 两种方法(基本方法和使用else简化的方法)的输出结果一致,验证了代码的正确性。

六、代码优化

虽然上述代码已经能够正确地找出101到200之间的所有素数,但还可以进一步优化以提高效率。以下是一个优化版本:

import math
print('\n使用“else”简化代码:\n')# 使用else简化代码
prime_count = 0  # 重新初始化素数计数器
for i in range(101, 201):for j in range(2, round(math.sqrt(i)) + 1):if i % j == 0:break  # 如果找到能整除的数,则退出内层循环else:  # 如果没有执行break,则是素数print(i)prime_count += 1print("\n101到200之间的素数总数为:", prime_count)

优化点解释

2. 使用else简化代码

(1)外层循环
for i in range(101, 201):
  • 与基本方法相同,遍历101到200之间的所有整数。

(2)内层循环与else
for j in range(2, round(math.sqrt(i)) + 1):if i % j == 0:break
else:print(i)prime_count += 1
  • 内层循环逻辑与基本方法相同,但如果内层循环没有执行break(即没有找到能整除的数),则执行else块。

  • else块中输出素数,并将素数计数器prime_count加1。

七、总结

通过合理的算法设计和代码优化,我们可以高效地找出101到200之间的所有素数。本文提出的优化方法不仅提高了代码的效率,还增强了代码的可读性和可维护性。通过运行结果的展示,我们可以清晰地看到程序的正确性和效率。

!仅供参考

相关文章:

Python案例--100到200的素数

一、问题描述 素数(Prime Number)是指在大于1的自然数中,除了1和它本身以外不再有其他因数的数。判断一个数是否为素数是计算机科学和数学中的一个经典问题。本实例的目标是找出101到200之间的所有素数,并统计它们的数量。 二、…...

C语言,无法正常释放char*的空间

问题描述 #include <stdio.h> #include <stdio.h>const int STRSIZR 10;int main() {char *str (char *)malloc(STRSIZR*sizeof(char));str "string";printf("%s\n", str);free(str); } 乍一看&#xff0c;这块代码没有什么问题。直接书写…...

重回C语言之老兵重装上阵(十五)C语言错误处理

C语言错误处理 在C语言中&#xff0c;错误处理是非常重要的一部分。C语言没有像高级语言&#xff08;例如Python、Java&#xff09;那样内建的异常处理机制&#xff08;如try-catch&#xff09;&#xff0c;但它提供了几种方法来捕捉和处理错误。正确的错误处理可以提高程序的稳…...

基于微信的课堂助手小程序设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…...

Effective C++ 规则50:了解 new 和 delete 的合理替换时机

1、背景 在 C 中&#xff0c;new 和 delete 是动态分配内存的核心操作符。然而&#xff0c;直接使用它们有时会增加程序的复杂性&#xff0c;甚至导致内存泄漏和其他问题。因此&#xff0c;了解何时替换 new 和 delete 并选择更适合的内存管理策略&#xff0c;是编写高效、健壮…...

Alfresco Content Services dockerCompose自动化部署详尽操作

Alfresco Content Services docker社区部署文档 Alfresco Content Services简介 Alfresco Content Services&#xff08;简称ACS&#xff09;是一款功能完备的企业内容管理&#xff08;ECM&#xff09;解决方案&#xff0c;主要面向那些对企业级内容管理有高要求的组织。具体…...

学习第七十六行

提高github下载速度方法 1.github转码云 2.https://github.com.cnpmjs.org com后面加东西 对于面试笔试&#xff0c;最好方法刷力扣&#xff0c;1000题包进大厂的...

YOLOv11改进,YOLOv11检测头融合DynamicHead,并添加小目标检测层(四头检测),适合目标检测、分割等任务

摘要 作者提出一种新的检测头,称为“动态头”,旨在将尺度感知、空间感知和任务感知统一在一起。如果我们将骨干网络的输出(即检测头的输入)视为一个三维张量,其维度为级别 空间 通道,这样的统一检测头可以看作是一个注意力学习问题,直观的解决方案是对该张量进行全自…...

一个基于Python+Appium的手机自动化项目~~

本项目通过PythonAppium实现了抖音手机店铺的自动化询价&#xff0c;可以直接输出excel&#xff0c;并带有详细的LOG输出。 1.excel输出效果: 2. LOG效果: 具体文件内容见GitCode&#xff1a; 项目首页 - douyingoods:一个基于Pythonappium的手机自动化项目&#xff0c;实现了…...

【后端开发】字节跳动青训营之性能分析工具pprof

性能分析工具pprof 一、测试程序介绍二、pprof工具安装与使用2.1 pprof工具安装2.2 pprof工具使用 资料链接&#xff1a; 项目代码链接实验指南pprof使用指南 一、测试程序介绍 package mainimport ("log""net/http"_ "net/http/pprof" // 自…...

Linux:线程池和单例模式

一、普通线程池 1.1 线程池概念 线程池&#xff1a;一种线程使用模式。线程过多会带来调度开销&#xff0c;进而影响缓存局部性和整体性能。而线程池维护着多个线程&#xff0c;等待着监督管理者分配可并发执行的任务。这避免了在处理短时间任务时创建与销毁线程的代价&…...

使用iis服务器模拟本地资源服务器unityaddressables热更新出错记录

editor中设置了using exculexing 模拟远程加载addressable可以实现资源热更新&#xff0c;build后的软件却没有成功。 iis服务器中mime中需要设置bundle的文件扩展名&#xff0c;时editor成功&#xff0c;build后失败 原因没有设置hash的扩展名&#xff0c;设置后editor和buil…...

TikTok广告投放优化策略:提升ROI的核心技巧

在短许多品牌和商家纷纷投入广告营销&#xff0c;争夺这片潜力巨大的市场。然而&#xff0c;在激烈的竞争环境中&#xff0c;如何精准有效地投放广告&#xff0c;优化广告效果&#xff0c;实现更高的投资回报率&#xff08;ROI&#xff09;成为了广告主关注的核心。 一. 精准受…...

Hash表

哈希表存储结构&#xff08;开放寻址法&#xff0c;拉链法&#xff09;字符串哈希方式&#xff08;添加、查找h(x)&#xff09; 常见从0~10^9映射到0~10^5就要对10^5取mod&#xff08;取模一般要质数最好&#xff09;但是可能会有冲突 1.拉链法&#xff1a;O(1)&#xff0c;每…...

题解:P10972 I-Country

题目传送门 思路 因为占据的连通块的左端点先递减、后递增&#xff0c;右端点先递增、后递减&#xff0c;所以设 f i , j , l , r , x ( 0 / 1 ) , y ( 0 / 1 ) f_{i,j,l,r,x(0/1),y(0/1)} fi,j,l,r,x(0/1),y(0/1)​ 为前 i i i 行中&#xff0c;选择 j j j 个方格&#x…...

linux常用加固方式

目录 一.系统加固 二.ssh加固 三.换个隐蔽的端口 四.防火墙配置 五.用户权限管理 六.暴力破解防护 七.病毒防护 八.磁盘加密 九.双因素认证2FA 十.日志监控 十一.精简服务 一.系统加固 第一步&#xff1a;打好系统补丁 sudo apt update && sudo apt upgra…...

笔灵ai写作技术浅析(二):自然语言处理

一、词法分析(Lexical Analysis) 1.1 概述 词法分析是NLP的第一步,主要任务是将连续的文本分割成有意义的单元(词或词组),并对这些单元进行标注,如词性标注(POS tagging)。词法分析的质量直接影响后续的句法分析和语义理解。 1.2 技术细节 1.分词(Tokenization)…...

PyCharm介绍

PyCharm的官网是https://www.jetbrains.com/pycharm/。 以下是在PyCharm官网下载和安装软件的步骤&#xff1a; 下载步骤 打开浏览器&#xff0c;访问PyCharm的官网https://www.jetbrains.com/pycharm/。在官网首页&#xff0c;点击“Download”按钮进入下载页面。选择适合自…...

深度解析:基于Vue 3与Element Plus的学校管理系统技术实现

一、项目架构分析 1.1 技术栈全景 核心框架&#xff1a;Vue 3 TypeScript UI组件库&#xff1a;Element Plus&#xff08;含图标动态注册&#xff09; 状态管理&#xff1a;Pinia&#xff08;用户状态持久化&#xff09; 路由方案&#xff1a;Vue Router&#xff08;动态路…...

Python从0到100(八十五):神经网络-使用迁移学习完成猫狗分类

前言: 零基础学Python:Python从0到100最新最全教程。 想做这件事情很久了,这次我更新了自己所写过的所有博客,汇集成了Python从0到100,共一百节课,帮助大家一个月时间里从零基础到学习Python基础语法、Python爬虫、Web开发、 计算机视觉、机器学习、神经网络以及人工智能…...

MFC内存泄露

1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍

文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结&#xff1a; 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析&#xff1a; 实际业务去理解体会统一注…...

uniapp微信小程序视频实时流+pc端预览方案

方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度​WebSocket图片帧​定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐​RTMP推流​TRTC/即构SDK推流❌ 付费方案 &#xff08;部分有免费额度&#x…...

解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错

出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上&#xff0c;所以报错&#xff0c;到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本&#xff0c;cu、torch、cp 的版本一定要对…...

Spring AI与Spring Modulith核心技术解析

Spring AI核心架构解析 Spring AI&#xff08;https://spring.io/projects/spring-ai&#xff09;作为Spring生态中的AI集成框架&#xff0c;其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似&#xff0c;但特别为多语…...

什么是Ansible Jinja2

理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具&#xff0c;可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板&#xff0c;允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板&#xff0c;并通…...

基于matlab策略迭代和值迭代法的动态规划

经典的基于策略迭代和值迭代法的动态规划matlab代码&#xff0c;实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...

Yolov8 目标检测蒸馏学习记录

yolov8系列模型蒸馏基本流程&#xff0c;代码下载&#xff1a;这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中&#xff0c;**知识蒸馏&#xff08;Knowledge Distillation&#xff09;**被广泛应用&#xff0c;作为提升模型…...

使用LangGraph和LangSmith构建多智能体人工智能系统

现在&#xff0c;通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战&#xff0c;比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…...

2025年渗透测试面试题总结-腾讯[实习]科恩实验室-安全工程师(题目+回答)

安全领域各种资源&#xff0c;学习文档&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具&#xff0c;欢迎关注。 目录 腾讯[实习]科恩实验室-安全工程师 一、网络与协议 1. TCP三次握手 2. SYN扫描原理 3. HTTPS证书机制 二…...