编程入门:详解“与7无关的数”筛选与求和问题

发布时间:2026/8/6 9:01:20

编程入门:详解“与7无关的数”筛选与求和问题
这类编程练习题最值得先看的不是题目描述而是它到底在考察什么、新手容易在哪里卡住、以及怎么写出既正确又清晰的代码。“与7无关的数”是一个经典的入门级筛选与求和问题它考察的是对整数基本操作、条件判断和循环的掌握。很多初学者一看题目觉得简单但实际写起来可能在“与7无关”的条件理解、边界处理或者求和累加的逻辑上出岔子。这篇文章就从一个写过很多类似代码的角度拆解这道题让你不仅能做出答案更能理解这类问题的通用解决思路和避坑要点。1. 先拆解“与7无关”到底是什么意思题目通常这样描述一个正整数如果它能被7整除或者它的十进制表示法中某一位上的数字为7则称这个数为“与7有关”。反之则是“与7无关”。现在给定一个范围比如n 100求这个范围内所有“与7无关”的正整数的平方和。1.1 核心条件判断三个子条件必须全部不满足“与7无关”是“与7有关”的反面。所以我们的核心是判断一个数是否“与7有关”。如果一个数满足以下任意一个条件它就是有关的能被7整除即i % 7 0。个位是7即i % 10 7。十位是7即(i / 10) % 10 7。对于n100的情况十位就是i / 10。只有当这三个条件全部不满足时这个数才是“与7无关”的。很多新手会在这里逻辑混淆错误地用“且”去连接条件。记住判断“有关”用“或”判断“无关”则需要对“有关”的条件取反或者直接用“且”连接三个不满足的条件。1.2 为什么是“平方和”而不是简单求和题目要求的是平方和这增加了两个考察点计算需要在循环体内累加i * i而不是i。数据范围平方和增长很快。例如当n99时最大的无关数可能是96其平方为9216。100个这样的数平方和可能会超过int型变量的表示范围约21亿。因此使用long long类型来存储结果通常是更安全的选择这是一个非常实际的工程细节。1.3 输入范围与循环边界题目一般会给出一个上限n(1 n 100)。我们需要处理的是从1到n包括n的所有整数。循环的写法通常是for(int i 1; i n; i)。这里要注意是i n还是i n必须根据题意明确。对于“小于n”的描述就是i n。2. 从零开始的完整实现步骤与代码我们假设题目输入是一个整数n输出是1到n之间所有与7无关的正整数的平方和。下面我按实际写代码和测试的顺序一步步来。2.1 环境与框架准备你可以在任何支持C/C的环境里写这道题比如本地IDEVisual Studio, Code::Blocks, Dev-C等。在线编译器很多OJ在线判题系统都自带。命令行用g或clang编译。代码结构就是一个简单的控制台程序。我建议先在一个单独的.cpp文件里写方便编译和测试。2.2 第一种写法清晰的条件判断这是最直观的写法直接翻译题目逻辑。#include iostream using namespace std; int main() { int n; cin n; // 读入范围上限n long long sum 0; // 使用long long防止平方和溢出 for (int i 1; i n; i) { // 判断是否与7有关 bool related false; if (i % 7 0) { // 条件1能被7整除 related true; } else if (i % 10 7) { // 条件2个位是7 related true; } else if ((i / 10) % 10 7) { // 条件3十位是7 related true; } // 如果与7无关则累加其平方 if (!related) { sum (long long)i * i; // 注意这里也转为long long计算 } } cout sum endl; return 0; }为什么这么写用一个布尔变量related来标记逻辑清晰。使用else if是因为一旦确定有关就不需要再判断后续条件效率稍高。在累加时将i强制转换为long long再相乘是为了避免两个int相乘可能溢出虽然本题n100不太会但这是好习惯。2.3 第二种写法简化的条件表达式也可以将判断条件写在一个if语句里更紧凑。#include iostream using namespace std; int main() { int n; cin n; long long sum 0; for (int i 1; i n; i) { // 判断是否与7无关同时不满足三个条件 if ( (i % 7 ! 0) (i % 10 ! 7) ((i / 10) % 10 ! 7) ) { sum (long long)i * i; } } cout sum endl; return 0; }这种写法直接判断“无关”条件是用“且”连接的三个“不等于”。我个人更推荐新手先用第一种逻辑更直白熟练后可以用第二种代码更简洁。2.4 验证与测试自己当一回判题机写完代码不要直接提交先自己用几个例子验一下。测试用例设计小范围验证 (n10)与7有关的数7被7整除。与7无关的数1, 2, 3, 4, 5, 6, 8, 9, 10。平方和 1491625366481100 336。运行程序输入10看输出是否为336。包含个位和十位是7的数 (n20)与7有关的数7, 14, 17。可以手动计算或信任程序。用你的程序跑一遍再心算几个关键数验证。边界测试 (n1, n6)n1时输出应为1。n6时输出应为14916253691。稍大的数 (n30)检查27个位是7不是十位2不是7个位是7等等27的个位是7所以27是有关的。这个例子能帮你确认条件判断是否正确。在本地运行输入这些测试用例对比输出。如果都对了你的代码逻辑基本就稳了。3. 深入讨论如果n的范围扩大怎么办原题n100所以我们只检查了十位。这是一个重要的边界限制。如果题目没有明确限制n的范围或者n可以很大比如n10000那么“某一位上是7”这个条件就需要通用化处理。3.1 通用化的数字位检查算法我们不能只写死检查十位和个位。需要一个循环来分解整数的每一位。bool isRelatedToSeven(int num) { // 条件1能被7整除 if (num % 7 0) { return true; } // 条件2任何一位数字等于7 int temp num; while (temp 0) { if (temp % 10 7) { // 检查当前个位 return true; } temp / 10; // 去掉个位 } return false; // 两个条件都不满足则无关 }在主循环中调用这个函数for (int i 1; i n; i) { if (!isRelatedToSeven(i)) { sum (long long)i * i; } }为什么这样写更好可扩展性无论n是几位数算法都适用。清晰性将核心判断逻辑封装成函数主函数更简洁。可维护性如果判断规则变化只需修改这个函数。3.2 思考性能与优化对于n100两种方法性能无差异。但如果n极大例如上亿我们需要考虑提前终止上面的函数一旦发现某位是7就返回避免了不必要的循环。避免重复计算i * i可以计算一次存起来。数学方法本题可能存在更巧妙的数学规律来批量计算“无关数”的平方和但这超出了入门练习的范畴。对于算法题优先保证正确性和清晰性。注意在入门阶段不要过早追求极致的优化。先把逻辑写对、写清楚这是最重要的。4. 常见错误与排查清单很多同学提交代码后遇到“答案错误”、“运行超时”或“格式错误”问题往往出在细节上。下面是我总结的排查顺序4.1 答案错误Wrong Answer这是最常出现的。按以下顺序检查条件逻辑检查if语句的逻辑运算符。是“或”还是“且”判断“有关”还是“无关”最经典的错误就是把判断“无关”的条件(i%7!0 i%10!7 (i/10)%10!7)错写成(i%7!0 || i%10!7 || (i/10)%10!7)。循环边界确认是i n还是i n。仔细读题求和变量初始化sum是否初始化为0了未初始化的变量值随机会导致结果不可预测。整数溢出sum是否用了int当n较大时平方和很可能超过21亿。改成long long。中间计算溢出即使sum是long longi * i也可能是两个int相乘在赋值给sum前就已经溢出了。确保计算时类型足够大如sum (long long)i * i。输入输出格式题目要求输出后换行吗你的cout sum;后面有没有加 endl或\n4.2 运行超时Time Limit Exceeded本题n100几乎不可能超时。如果超时99%是代码陷入了死循环。检查循环变量在for循环里你是否错误地修改了循环变量i通用化算法检查如果你写了通用位检查的while循环确保循环条件(temp 0)正确并且循环体内有temp / 10来改变temp的值。4.3 格式错误Presentation Error通常是因为输出格式与题目要求不完全一致。多输出或少输出是否只输出了一个结果有没有多输出提示语句如“请输入n:”OJ只接受纯结果数据。空格与换行结果是单独一行吗末尾有换行符吗在大多数OJ中末尾有无换行符不影响判题但最好养成输出后换行的习惯 (cout sum endl;)。5. 举一反三同类问题的解决模式“与7无关的数”是一个代表有一类问题都可以用类似的模式解决。掌握这个模式你就能快速解决它们。5.1 问题模式识别这类问题的共性给定一个整数范围按照某种规则筛选出符合条件的数然后对它们进行某种运算求和、平方和、计数、求平均值等。规则可能包括数字特性某位是几、是回文数、是水仙花数、数字之和等。整除特性能被某个数整除、不能被某个数整除。组合条件像本题一样多个条件的组合。5.2 通用解决框架读入数据确定范围n有时可能是区间[a, b]。初始化结果变量根据运算是求和、计数还是其他初始化sum0,count0等。注意数据类型。遍历范围使用for循环遍历每个待检查的数i。条件判断编写一个函数或一段内联代码判断i是否满足条件。这是核心。如果判断逻辑复杂强烈建议封装成独立函数如bool check(int num)。判断时注意提取数字的各位通过%10和/10循环。累积结果如果满足条件就更新结果变量sum i*i,count。输出结果按格式要求输出。5.3 变式练习你可以用这个框架尝试解决以下问题巩固技能求水仙花数一个三位数其各位数字立方和等于该数本身。输出所有水仙花数。求素数之和求给定区间内所有素数的和。数字统计统计1到n中数字k0-9出现了多少次。特殊数的和求1到n中既能被3整除又能被5整除的数的和。解决这些问题时唯一需要变化的就是第4步的“条件判断”函数。遍历和累加的框架是完全一样的。6. 写给新手的最后几点建议我见过很多初学者在这类题目上反复出错不是因为算法难而是因为一些习惯没养成。第一先画流程图或写伪代码再敲键盘。尤其是条件判断部分用纸笔列出几个测试数如7, 14, 17, 27, 71手动走一遍你的判断逻辑。这能避免最致命的逻辑错误。第二重视测试。不要只相信样例输入输出。像第2.4节那样自己设计几个关键的、边界的测试用例。包括最小的n、最大的n、包含各种“有关”情况的n。自己当自己的第一道关卡。第三理解大于记忆。不要只背下这道题的代码。要理解“遍历-判断-累加”这个模式理解如何用%和/来获取数字的每一位。这样下次遇到“与5无关”或者“包含数字3”的题目你就能自己写出来。第四注意数据类型是基本功。int和long long的选择中间计算会不会溢出这些问题在简单题里可能不暴露但在复杂题目里就是致命的。从一开始就养成根据数据范围选择类型的习惯。这道题本身不难但它像一块很好的试金石能检验你对循环、条件、基本运算和整数处理是否真的掌握了。把它吃透这一类“数字筛选计算”题你就有了一个可靠的解题模板。

相关新闻

Turbo C++ 3.0汉化版完整配置与开发环境搭建实战

Turbo C++ 3.0汉化版完整配置与开发环境搭建实战

2026/8/6 9:01:20

1. 项目概述:为什么今天还要折腾Turbo C 3.0?如果你是一位从90年代末或21世纪初开始接触编程的老兵,看到“Turbo C 3.0”这个名字,心里肯定会泛起一阵复杂的涟漪。它可能是你编程生涯的起点,那个在蓝底黄字的DOS界面里…

音乐情感分析:技术拆解为何特定歌曲引发告别预感

音乐情感分析:技术拆解为何特定歌曲引发告别预感

2026/8/6 9:01:20

最近在整理音乐项目时,发现一个有趣的现象:某些歌曲因其特定的创作背景、旋律走向或歌词意境,会让人产生超越歌曲本身的联想和情感共鸣。比如,有朋友提到,第一次听到某首新歌时,竟产生了“这不会是告别曲吧…

CrewAI项目环境变量配置:告别API密钥硬编码的安全实践

CrewAI项目环境变量配置:告别API密钥硬编码的安全实践

2026/8/6 9:01:20

1. 项目概述:为什么CrewAI项目必须告别硬编码风险?如果你正在用CrewAI搭建多智能体系统,或者正准备上手,那你肯定遇到过这个场景:在代码里直接写下了你的API密钥,比如api_key "sk-xxxx-your-secret-k…

数字孪生项目价值:融谷信息用三层验收法判断

数字孪生项目价值:融谷信息用三层验收法判断

2026/8/6 10:01:22

判断一个数字孪生项目值不值,不用看屏幕多大、模型多细,看三层就够了:数据接入层能不能把真实世界接进来,业务场景层能不能对应到具体岗位的动作,决策运营层能不能在交付后持续产生价值。 融谷信息做数字孪生交付&…

2026年看杨老斯视频找云千生态施工?视频那批人真相来了

2026年看杨老斯视频找云千生态施工?视频那批人真相来了

2026/8/6 10:01:22

7.9万粉丝的视频账号,评论区几乎每天都有同一个问题:视频里干活的那批师傅,下单后真的会到我家来吗? 这个疑问背后的担忧,说白了就是怕花了十几万,结果来的是一支临时拼凑的草台班子。据我了解&#xff0c…

搜广推面试:从机器学习基础到系统架构的实战指南

搜广推面试:从机器学习基础到系统架构的实战指南

2026/8/6 10:01:22

1. 从“八股”到“真功夫”:搜广推面试的本质是什么? 每次看到“面试八股”这个词,我都能感受到屏幕后面求职者那种又爱又恨的复杂心情。爱的是,它像一份“考纲”,划定了复习范围,让人在焦虑中抓住一根稻草…

Cocos Creator WebSocket实战:从连接到优化,构建稳定实时游戏网络

Cocos Creator WebSocket实战:从连接到优化,构建稳定实时游戏网络

2026/8/6 10:01:22

1. 项目概述:为什么要在Cocos Creator里折腾WebSocket?如果你正在用Cocos Creator做游戏,尤其是需要实时交互的那种——比如多人在线对战、聊天室、实时排行榜,或者仅仅是需要从服务器拉个不停变动的数据——那你大概率绕不开WebS…

HsMod:炉石传说游戏体验全面优化插件终极指南

HsMod:炉石传说游戏体验全面优化插件终极指南

2026/8/6 10:01:22

HsMod:炉石传说游戏体验全面优化插件终极指南 【免费下载链接】HsMod Hearthstone Modification Based on BepInEx 项目地址: https://gitcode.com/GitHub_Trending/hs/HsMod HsMod是一款基于BepInEx框架开发的炉石传说模改插件,为玩家提供超过50…

诊断证明书在哪翻译?机构怎么挑选更靠谱?

诊断证明书在哪翻译?机构怎么挑选更靠谱?

2026/8/6 9:51:22

前言不少人在申办海外签证、境外保险理赔、跨国就医、留学休学手续时,经常碰到诊断证明专业医学词汇译错、译本缺少翻译公章、病历隐私泄露的麻烦。慧办好在线翻译深耕医疗证件翻译,持证译员把控医学术语,规避机器翻译带来的病症、防止签证拒…

ncmdumpGUI:一键解锁网易云音乐ncm文件的终极解决方案

ncmdumpGUI:一键解锁网易云音乐ncm文件的终极解决方案

2026/8/4 15:23:37

ncmdumpGUI:一键解锁网易云音乐ncm文件的终极解决方案 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换,Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 你是否曾经从网易云音乐下载了心爱的歌曲&am…

分布式配置中心选型实战:Nacos与Consul在创业场景下的对比

分布式配置中心选型实战:Nacos与Consul在创业场景下的对比

2026/8/5 6:02:27

分布式配置中心选型实战:Nacos与Consul在创业场景下的对比工程导读:本文深入讨论 分布式配置中心选型实战:Nacos与Consul在创业场景下的对比 在生产工程实践中的核心落地方案。基于 分布式架构与微服务设计 视角,剖析实际痛点、架…

MoneyPrinterPlus实战指南:AI视频批量生成与自动化发布完整解决方案

MoneyPrinterPlus实战指南:AI视频批量生成与自动化发布完整解决方案

2026/8/5 8:19:55

MoneyPrinterPlus实战指南:AI视频批量生成与自动化发布完整解决方案 【免费下载链接】MoneyPrinterPlus AI一键批量生成各类短视频,自动批量混剪短视频,自动把视频发布到抖音,快手,小红书,视频号上,赚钱从来没有这么容易过! 支持本地语音模型chatTTS,fasterwhisper,…

Unity相机抖动插件Camera-Shake集成与应用实战指南

Unity相机抖动插件Camera-Shake集成与应用实战指南

2026/8/6 0:00:51

1. 项目概述与核心价值最近在做一个动作游戏,需要给主角的重击和爆炸场景加点料,让打击感更足。我第一时间就想到了给相机加个抖动效果,毕竟这是提升玩家沉浸感最简单直接的手段之一。自己手写一个也不是不行,但时间成本高&#x…

Cocos Creator 3.7微信小游戏开发:从架构设计到提审上线的全流程实战指南

Cocos Creator 3.7微信小游戏开发:从架构设计到提审上线的全流程实战指南

2026/8/6 0:00:51

1. 项目概述:为什么需要一份3.7版本的专属适配指南?如果你是一位使用Cocos Creator开发微信小游戏的开发者,并且项目正运行在3.7版本上,那么你很可能已经感受到了那份“甜蜜的烦恼”。一方面,Cocos Creator 3.7是一个功…

AI编程实战:从Prompt工程到工具链集成,打造高效开发工作流

AI编程实战:从Prompt工程到工具链集成,打造高效开发工作流

2026/8/6 0:00:51

1. 项目概述:一次开源AI编程课程的深度重构 最近,我把自己的开源AI编程课程《Claude Code》做了一次从里到外的大更新。如果你对利用Claude、Codex这类大模型来辅助编程感兴趣,或者正在寻找一个能跟上最新AI编码工具迭代节奏的学习路径&#…

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

2026/8/6 5:43:30

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…

导师推荐!2026最新AI论文工具测评与实用推荐

导师推荐!2026最新AI论文工具测评与实用推荐

2026/8/4 14:25:14

2026年真正好用的AI论文工具,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

告别游戏崩溃:XCOM 2模组管理器的智能革命

告别游戏崩溃:XCOM 2模组管理器的智能革命

2026/8/4 15:11:03

告别游戏崩溃:XCOM 2模组管理器的智能革命 【免费下载链接】xcom2-launcher The Alternative Mod Launcher (AML) is a replacement for the default game launchers from XCOM 2 and XCOM Chimera Squad. 项目地址: https://gitcode.com/gh_mirrors/xc/xcom2-lau…