【C++】判断能否被 3, 5, 7 整除问题解析与优化


在这里插入图片描述

博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳]
本文专栏: C++

文章目录

  • 💯前言
  • 💯题目描述
  • 💯老师代码实现与分析
    • 老师代码逻辑分析
    • 优点
    • 缺点
  • 💯学生代码实现与分析
    • 学生代码逻辑分析
    • 优点
    • 缺点
  • 💯改进与优化
    • 优化代码实现
    • 优化点分析
    • 优化效果
  • 💯题目扩展与思考
  • 💯小结


在这里插入图片描述


💯前言

  • 在计算机科学教育中,基础整数计算问题是一种经典且有效的教学策略。这类问题既能帮助初学者掌握编程的基本语法和逻辑,也为更复杂的算法设计与实现奠定了基础。本文以判断整数是否能被 357 整除的问题为例,详细分析问题背景代码实现及其优化方法,并探讨潜在的扩展应用。
    不仅如此,本问题在条件分支逻辑设计代码结构优化等方面蕴含着丰富的学习价值。通过深入剖析不同实现方式及其优缺点,本文旨在为读者提供系统化的解决思路,同时为更高级的编程问题奠定理论基础实践能力
    C++ 参考手册
    在这里插入图片描述


💯题目描述

判断能否被 3,5,7 整除
在这里插入图片描述

题目:判断能否被 3, 5, 7 整除

给定一个整数 x x x,判断是否能被 3、5、7 整除,并输出以下信息:

  1. 如果能同时被 3、5 和 7 整除,输出 3 5 7
  2. 如果能被其中两个数字整除,按照数字从小到大的顺序输出,例如 3 5
  3. 如果只能被其中一个数字整除,输出对应的数字;
  4. 如果不能被任何一个数字整除,输出 n

输入格式:
输入一行,包含一个整数 x x x

输出格式:
输出一行,按照题目要求给出整数 x x x 是否能被 3、5、7 整除的情况。

输入输出示例:

输入:

105

输出:

3 5 7

数据范围:
1 ≤ x ≤ 200 1 \leq x \leq 200 1x200


💯老师代码实现与分析

老师代码采用多层条件判断逻辑,逐一覆盖所有可能的输出情景,以确保解法的完整性。以下为代码实现:

#include <iostream>
using namespace std;int main()
{int n = 0;cin >> n;if (n % 3 == 0 && n % 5 == 0 && n % 7 == 0)cout << "3 5 7" << endl;else if (n % 3 == 0 && n % 5 == 0)cout << "3 5" << endl;else if (n % 3 == 0 && n % 7 == 0)cout << "3 7" << endl;else if (n % 5 == 0 && n % 7 == 0)cout << "5 7" << endl;else if (n % 3 == 0)cout << "3" << endl;else if (n % 5 == 0)cout << "5" << endl;else if (n % 7 == 0)cout << "7" << endl;elsecout << "n" << endl;return 0;
}

在这里插入图片描述


老师代码逻辑分析

  1. 条件覆盖性

    • 每个分支明确对应一种输出情景,从 3 5 7 到单独的 357,以及无法整除时的 n,保证逻辑无遗漏。
  2. 执行顺序直观

    • 多层 if-else if 语句按照条件优先级执行,逻辑清晰易读。

优点

  • 清晰直观:通过显式列举所有条件,逻辑易于理解和调试。
  • 全面性强:覆盖了所有可能的输入情景。

缺点

  • 代码冗长:多层条件判断导致代码显得繁琐。
  • 扩展性较差:若需新增判断条件(如判断能否被 11 整除),需增加多个分支。
  • 重复计算:条件中存在重复计算(如 n % 3),影响性能。

💯学生代码实现与分析

学生代码通过多个独立的 if 条件判断实现,逻辑更加简洁。以下为代码:

#include <iostream>
using namespace std;int main()
{int x;cin >> x;if (x % 3 == 0)cout << 3 << " ";if (x % 5 == 0)cout << 5 << " ";if (x % 7 == 0)cout << 7 << " ";if (x % 3 != 0 && x % 5 != 0 && x % 7 != 0)cout << "n" << endl;return 0;
}

在这里插入图片描述


学生代码逻辑分析

  1. 独立性强

    • 每个条件均独立判断,避免嵌套逻辑。
  2. 直接输出

    • 满足条件即输出对应数字,无需考虑优先级。

优点

  • 实现简洁:逻辑结构清晰,易于理解。
  • 可扩展性高:新增条件只需添加对应的 if 语句。

缺点

  • 输出格式问题:数字后可能多出空格,影响输出格式。
  • 重复计算x % 3 等条件可能被多次检查。

💯改进与优化

基于上述实现的优缺点,我们提出以下优化方案,以提升代码效率与可维护性,同时确保输出格式符合要求。


优化代码实现

#include <iostream>
using namespace std;int main()
{int x;cin >> x;string result = ""; // 用于存储输出结果if (x % 3 == 0)result += "3 ";if (x % 5 == 0)result += "5 ";if (x % 7 == 0)result += "7 ";if (result.empty())cout << "n" << endl;elsecout << result.substr(0, result.size() - 1) << endl; // 去掉多余空格return 0;
}

优化点分析

  1. 字符串拼接简化逻辑

    • 动态拼接结果字符串,避免了多层条件嵌套。
    • 最终输出时去除末尾多余空格,确保格式正确。
  2. 减少重复计算

    • 避免了对同一条件的重复判断,提高运行效率。
  3. 增强可扩展性

    • 新增条件时,只需追加对应的 if 判断。

优化效果

  • 效率提升:减少冗余计算。
  • 格式正确:通过字符串操作保证输出符合要求。
  • 代码简洁:逻辑清晰,易于维护。

💯题目扩展与思考

  1. 扩展整除范围

    • 若需判断是否能被任意一组数字整除(如 2、3、5、7、11),可通过数组存储条件并动态遍历。
  2. 并行计算优化

    • 针对大规模输入数据,可采用多线程实现,提升整体计算效率。
  3. 跨语言实现

    • 尝试在 Python、Java 等语言中实现,并对比不同语言的性能与代码风格。
  4. 与数学问题结合

    • 可将整除判断与质因数分解、最大公约数(GCD)计算等数学问题结合,设计更复杂的应用场景。

💯小结

  • 在这里插入图片描述
    本文围绕判断整数是否能被 357 整除的问题,从问题描述出发,分析了两种代码实现方式,并提出优化方案。通过改进,我们提升了代码的效率可读性扩展性。同时,本文还探讨了该问题的潜在扩展方向,为解决更复杂的算法问题提供了参考。
    这类问题既是编程基础能力的训练,也是算法设计思维的培养。希望本文能为读者提供启发,帮助其在学习与实践中进一步提升编程能力。同时,这些方法和思路也将为更广泛的技术探索和研究提供助力。

在这里插入图片描述


在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

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

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

相关文章

[计算机网络]IP地址推行的“书同文,车同轨”

硬件地址无法直接转换的故事 在很久很久以前&#xff0c;网络世界就像一个庞大的帝国&#xff0c;各个村落&#xff08;网络&#xff09;都有自己的语言&#xff08;硬件地址&#xff09;。每个村落都有自己的规则和习惯&#xff0c;村里的每户人家&#xff08;设备&#xff0…

Maven pom文件分析

文章目录 project子元素分类项目基础信息- parent- modelVersion- groupId- artifactId- name- version- packaging- description- url- inceptionYear 组织与许可信息- organization- licenses- developers- contributors- mailingLists 自定义属性信息- properties 模块配置-…

修改浏览器地址栏参数

Vue 修改当前页面地址栏参数 function updateUrlParameter(param: string, value: string) {const url new URL(window.location.href); // 获取当前页面的 URL// 解析哈希部分const hash url.hash ? url.hash.slice(1) : "";const [path, queryString] hash.sp…

深度优先搜索(DFS)与回溯法:从全排列到子集问题的决策树与剪枝优化

文章目录 前言&#x1f384;一、全排列✨核心思路✨实现步骤✨代码✨时间和空间复杂度&#x1f381;1. 时间复杂度&#x1f381;2. 空间复杂度 &#x1f384;二、子集✨解法一&#xff1a;逐位置决策法&#x1f381;步骤分析&#x1f381;运行示例&#x1f381;代码 ✨解法二&a…

加密算法之单向散列算法

加密算法 背景&#xff1a; 现有的序列号加密算法大都是软件开发者自行设计的&#xff0c;大部分相当简单。有些算法&#xff0c;其作者虽 然下了很大的工夫&#xff0c;却往往达不到希望达到的效果。其实&#xff0c;有很多成熟的算法可以使用&#xff0c;特别是密 码学中一些…

【FAQ】HarmonyOS SDK 闭源开放能力 —Push Kit(8)

1.问题描述&#xff1a; 在AGC中&#xff0c;推送服务的消息回执新建成功后&#xff0c;有一个有效期 1&#xff0c;这个有效期是什么意思&#xff0c;过期后&#xff0c;会影响什么呢&#xff1f; 2&#xff0c;这个有效期是否可以修改成一直不过期&#xff1f; 解决方案&…

egg初始搭建

前言 egg.js 是由阿里开源的面向企业级开发的 Node.js 服务端框架&#xff0c;它的底层是由 Koa2 搭建。 Github&#xff1a;https://github.com/eggjs/egg&#xff0c;目前 14.8K Star&#xff0c;egg 很适合做中台。 安装 首先&#xff0c;你要 确保 Node 已经配置环境变量…

D96【python 接口自动化学习】- pytest进阶之fixture用法

day96 pytest的fixture详解&#xff08;三&#xff09; 学习日期&#xff1a;20241211 学习目标&#xff1a;pytest基础用法 -- pytest的fixture详解&#xff08;三&#xff09; 学习笔记&#xff1a; fixture(scop"class") (scop"class") 每一个类调…

Python中的all/any函数和操作符and/or

操作符直观易读适用简单逻辑&#xff0c;函数紧凑方便适宜多条件处理。 (笔记模板由python脚本于2024年12月12日 22:19:10创建&#xff0c;本篇笔记适合有一定编程基础的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网&#xff1a;https://www.python.org/ Free&#xff…

论文学习——多种变化环境下基于多种群进化的动态约束多目标优化

论文题目&#xff1a;Multipopulation Evolution-Based Dynamic Constrained Multiobjective Optimization Under Diverse Changing Environments 多种变化环境下基于多种群进化的动态约束多目标优化&#xff08;Qingda Chen , Member, IEEE, Jinliang Ding , Senior Member, …

2025年山东省职业院校技能大赛“信息安全管理与评估”(山东省) 任务书

2025年山东省职业院校技能大赛“信息安全管理与评估”(山东省 任务书 模块一网络平台搭建与设备安全防护任务1&#xff1a;网络平台搭建 &#xff08;50分&#xff09;任务2&#xff1a;网络安全设备配置与防护&#xff08;250分&#xff09; 模块二网络安全事件响应、数字取证…

国标GB28181-2022平台EasyGBS如何实现无插件也能让RTSP在网页端播放?

在流媒体技术日新月异的今天&#xff0c;实时流传输协议&#xff08;RTSP&#xff09;作为视频监控、在线直播等领域的重要支撑&#xff0c;正经历着前所未有的变革。曾经&#xff0c;RTSP在网页端播放面临着诸多挑战&#xff0c;如浏览器兼容性问题、安全性考量以及视频流处理…

7-5 排序

给定 n 个&#xff08;长整型范围内的&#xff09;整数&#xff0c;要求输出从小到大排序后的结果。 本题旨在测试各种不同的排序算法在各种数据情况下的表现。各组测试数据特点如下&#xff1a; 数据1&#xff1a;只有1个元素&#xff1b;数据2&#xff1a;11个不相同的整数…

EXCEL 关于plot 折线图--频度折线图的一些细节

目录 0 折线图有很多 1 频度折线图 1.1 直接用原始数据做的频度折线图 2 将原始数据生成数据透视表 3 这样可以做出了&#xff0c;频度plot 4 做按某字段汇总&#xff0c;成为累计plot分布 5 修改上面显示效果&#xff0c;做成百分比累计plot频度分布 0 折线图有很多 这…

MATLAB四种逻辑运算

MATLAB中的四种逻辑运算包括逻辑与用&或 a n d 表示 ( 全为 1 时才为 1 &#xff0c;否则为 0 ) and表示(全为1时才为1&#xff0c;否则为0) and表示(全为1时才为1&#xff0c;否则为0)&#xff0c;逻辑或用|或 o r 表示 ( 有 1 就为 1 &#xff0c;都为 0 才为 0 ) or表示…

#UI框架篇:针对 ant-design-vue 版本 3.2.6 中 <a-select> 组件使用 mode=“combobox“ 时模式不生效的问题

针对 ant-design-vue 版本 3.2.6 中 组件使用 mode“combobox” 时模式不生效的问题&#xff0c;我们可以基于现有信息和社区反馈来探讨可能的原因及解决方案。 警告与弃用通知 根据最新的资料&#xff0c;ant-design-vue 已经发出警告&#xff1a;[antdv: Select] The combob…

面试经验分享 | 杭州某安全大厂渗透测试岗

目录&#xff1a; 所面试的公司&#xff1a;某安全大厂   所在城市&#xff1a;杭州    面试职位&#xff1a;渗透测试工程师    面试过程&#xff1a;  面试官的问题&#xff1a;    1、面试官开始就问了我&#xff0c;为什么要学网络安全&#xff1f;   …

jmeter CLI Mode 传参实现动态设置用户数

一.需求 CLI 运行模式下每次运行想要传入不同的用户数&#xff0c;比如寻找瓶颈值的场景&#xff0c;需要运行多次设置不同的用户数。 二.解决思路 查看官方API Apache JMeter - Users Manual: Getting Started api CLI Mode 一节中提到可以使用如下参数做属性的替换&#…

iPhone苹果相册视频怎么提取音频?

在数字时代&#xff0c;视频已成为我们记录生活、分享故事的重要方式。然而&#xff0c;有时候我们只想保留视频中的音频部分&#xff0c;比如一段动人的背景音乐或是一段珍贵的对话。那么&#xff0c;苹果相册视频怎么提取音频呢&#xff1f;本文将介绍三种简单且实用的方法&a…

AI大模型如何赋能电商行业,引领变革?

随着技术的发展&#xff0c;越来越多的电商平台开始尝试运用AI技术来提高销售效率&#xff0c;从用户体验到供应链管理&#xff0c;AI深刻影响着行业的未来发展趋势。 在AI加持下&#xff0c;如何使用AI技术实现购物推荐、会员分类、商品定价等方面的创新应用&#xff1f;如何运…