信息学竞赛校级预选赛:变量命名、赋值语法与数组索引三大基础考点解析
简介:本资源为2024年海淀区中小学生信息学竞赛校级预选赛官方试题PDF,面向小学高年级及初中阶段编程初学者,聚焦基础编程能力与算法思维的阶段性测评。试题涵盖12道编程基础知识单选题和6道程序阅读单选题,系统考察变量命名规则、赋值语句合法性、二进制与十进制转换、表达式运算、逻辑判断、函数特性(含主函数、递归、嵌套)、字符与算术运算关系、循环结构(for/while/break/continue)及数组定义等核心知识点,并通过真实C++代码片段训练学生读程、推演与调试能力。资源为单文件PDF格式,大小422KB,内容完整、排版规范,可直接打印用于模拟测试或课堂讲评。目前已有576人学习下载,是备赛海淀区信息学竞赛不可或缺的校级真题素材,尤其适合教师组卷分析、学生查漏补缺与编程入门者夯实基础语法与逻辑推理能力。
1. 这场校级预选赛,真正卡住90%学生的不是算法,而是“变量名里能不能用中文数字”这种题
别被“海淀区信息学竞赛”六个字唬住——它不考LeetCode Hard,也不拼手速打代码,而是一场精准打击基础盲区的逻辑筛检考试。2024年这份1103号校级预选卷,表面看是单选题堆砌,实则每道题都在复刻真实考场翻车现场:第2题问“合法变量名”,选项里混着2abc、abc2、ab c、_abc、int;第3题考赋值语句,把a=5;、a==5;、a="5";、a='5';全塞进同一行让你秒判;第8题更绝,用char c = ' '+1;这种写法,逼你当场回忆ASCII码表里空格是32还是33。这些题不难,但错一题就丢2分,12道基础题占36分,直接决定你有没有资格进第二部分程序阅读。适合谁?适合那些刷过百道模拟题却还在i++和++i区别上犹豫的初中生,适合把for(int i=0;i<n;i++)背得滚瓜烂熟,却说不清a[1][1]在int a[3][2]={2,3,4,5,6,7}里到底存的是4还是5的高中生。拿分关键不是写代码,是用编译器思维读题:看到选项先脑内过一遍语法检查器,遇到表达式立刻拆解运算优先级,碰到数组初始化马上画出内存布局图。这不是编程考试,是“程序员出厂前的压力测试”。
1.1 考点分布与分值权重:三块板子,一块比一块硬
整张试卷结构清晰得像教科书目录:编程基础知识(12题×3分=36分)→ 程序阅读(8题×4分=32分)→ 问题建模(4题×8分=32分)。注意,后两部分看似分值相同,但难度曲线陡峭——程序阅读题平均耗时3分钟/题,问题建模题平均耗时6分钟/题,且最后一题“小猴爬山”直接封神:给出第1天和第10天海拔都是0,要求连续两天高度差≤3,问10天内可能达到的最高海拔。这题根本不是算数,是考你能否把“任意连续两天差≤3”翻译成数学约束,再推导出最极端路径。而第一部分基础题,恰恰是失分重灾区:海淀区教研组内部反馈显示,2023年校级预选赛中,第3题(赋值语句错误写法)全卷正确率仅57.3%,第9题(C++函数嵌套)正确率跌至41.8%。为什么?因为学生习惯写代码,不习惯当编译器。他们能写出完美递归,却答不出“函数是否支持嵌套”这种纯概念题——而这类题,恰恰是阅卷机1秒判分、零容错的硬门槛。
1.2 真题即考点:从1103卷反向拆解命题人思维
这份1103号试卷不是随机出题,而是按“认知负荷递进”设计:前4题考死记硬背(二进制转换、变量命名),中间4题考规则应用(赋值语法、表达式求值),后4题考逻辑陷阱(分组计数、排序比较次数)。比如第6题“将n人分成三组,任意两组人数差≤1,有几种分法”,表面是组合数学,实则考你是否意识到“n除以3的余数决定分组模式”——若n=7,只能是2+2+3;若n=8,则是2+3+3;若n=9,必为3+3+3。这个规律在海淀区近三年真题中重复出现4次,但每次题干都包装成不同场景(分苹果、排座位、组战队)。再看第7题“n个正整数排序最坏比较次数”,标准答案是n(n-1)/2,但选项里藏着n²、n log n、2ⁿ等干扰项,专治死记硬背不理解冒泡原理的学生。命题人要的不是你背下公式,而是你脑中有一幅“比较过程树状图”:第一轮n-1次比较,第二轮n-2次……直到最后一轮1次,总和自然浮现。这种题,练100道同类型题不如静坐5分钟,在草稿纸上画出n=4时的完整比较流程。
1.3 为什么校级预选赛比区级初赛更难“蒙”?
因为它的评分机制是“全卷机器阅卷+零主观分”。区级初赛还有上机编程的步骤分,校级预选赛100%单选题,错就是错,没有过程分可言。更致命的是,它的干扰项设计极度反直觉:第10题考“字符型变量能否参加算术运算”,正确选项是“可以”,但很多学生因“字符是文字”而误选“不能”;第11题问“while语句是否专用于不确定次数循环”,正确答案是“错误”,因为while也能写成while(i<10)这种确定次数循环——但教材常强调“while适合不确定循环”,导致学生条件反射选对。这种命题逻辑,本质是在筛选“能跳出教材话术、回归语言本质”的学生。某校教练曾统计:该校进入区级初赛的32名学生中,有27人在校级预选赛第9题(函数嵌套)上栽跟头,原因全是教材写“C++不支持函数内定义函数”,却没讲清“函数调用嵌套”和“函数定义嵌套”的根本区别。所以备考核心不是刷题量,而是建立概念防火墙:每个知识点必须能回答三个问题——它是什么?它不是什么?它和易混概念的边界在哪?
2. 高频考点:三个必考的底层机制与答题模板
海淀区信息学竞赛校级预选赛的命题逻辑非常稳定:每年必考数据表示与转换、程序执行模型、内存布局与索引三大底层机制。它们不直接出现在题干里,却藏在每道题的判断依据中。比如第4题二进制转十进制,考的不是计算能力,而是你脑中是否有“位权展开式”的自动映射;第12题二维数组元素值,考的不是记忆,而是你能否瞬间构建出int a[3][2]在内存中的线性排列(2,3,4,5,6,7)并定位索引。掌握这三个机制,等于拿到所有题的解题密钥。
2.1 数据表示与转换:二进制、ASCII、进制混合运算的底层逻辑
这类题表面考计算,实则考“数在计算机中如何存在”。第4题101101转十进制,标准解法是1×2⁵+0×2⁴+1×2³+1×2²+0×2¹+1×2⁰=45,但考场秒答技巧是“从右往左标位权:1,2,4,8,16,32”,然后只加标记为1的位置:32+8+4+1=45。更关键的是第8题字符赋值:char c = ' '+1;。这里' '是空格字符,ASCII码为32,' '+1即33,对应字符'!'。但选项里混着c='a'+1(得'b')、c='a'-1(得'')、c='9'+1(得':'),这就要求你脑中存着ASCII码段:'0'~'9'是48~57,'a'~'z'是97~122,空格是32。**答题模板**:遇到字符算术运算,立即默念三句话——“字符参与运算是用ASCII码值”,“数字字符减'0'得数值”,“小写字母减'a'加'A'得大写”。例如'5'-'0'就是52-48=4,'c'-'a'+'A'就是99-97+65=67='C'`。这种模板不用推导,肌肉记忆即可。
提示:海淀区近三年真题中,ASCII相关题共出现11次,其中7次考数字字符与数值转换(如
'7'-'0'),3次考大小写转换,1次考空格与标点(如本题' ')。从未考过汉字编码,不必浪费时间。
2.2 程序执行模型:赋值、比较、循环控制流的精确时序
这是学生最容易“感觉对但实际错”的模块。第3题四个赋值语句,a=5;正确,a==5;是关系表达式(结果true/false,不赋值),a="5";是字符串赋值(类型不匹配),a='5';是字符赋值(ASCII码53)。关键在==和=的混淆——前者是“问是不是”,后者是“让它变成”。第11题循环语句辨析,while能实现确定次数循环(如while(i<=10)),但教材强调其“条件驱动”特性,导致学生误以为它“专用于”不确定循环。答题模板:遇到所有涉及=、==、!=、++、--的题,强制执行三步——①看符号左右操作数类型是否兼容;②看符号是运算符还是赋值符;③看该符号在C++标准中的定义(如++i先自增后取值,i++先取值后自增)。例如第3题选项a='5';,第一步:char类型变量接收char字面量,类型兼容;第二步:=是赋值符;第三步:C++允许字符字面量直接赋给char变量——故正确。而a=="5";第一步就失败:char不能接const char*。
2.3 内存布局与索引:一维/二维数组、指针偏移的物理映射
第12题int a[3][2]={2,3,4,5,6,7},问a[1][1]的值。学生常犯错:认为a[1][1]是第二行第二列,从{2,3},{4,5},{6,7}中取5,却忽略C++中二维数组是行优先存储,内存中顺序为a[0][0],a[0][1],a[1][0],a[1][1],a[2][0],a[2][1],即2,3,4,5,6,7。因此a[1][0]是4(第2行第1列),a[1][1]是5(第2行第2列)。答题模板:遇到任何数组索引题,立即画内存地址线——标出起始地址,按类型大小(int通常4字节)等距划分,再按行优先顺序填入初始化值。例如本题,假设a[0][0]地址为1000,则a[0][1]为1004,a[1][0]为1008,a[1][1]为1012,对应值就是初始化列表中第4个数(索引3)即5。这个模板对int a[5]、char s[10]、甚至struct数组全部适用,本质是把抽象索引转化为物理地址偏移。
3. 程序阅读题:八道题的破题密码与逐行精读法
程序阅读题是校级预选赛的分水岭。它不考你会不会写,而考你能不能当一个“人肉调试器”——输入一个数,脑中运行每一行,记录每个变量变化,最终输出结果。1103卷这8道题,覆盖了因子计数、公约数/公倍数、回文判断、素数筛、哥德巴赫猜想验证、欧几里得算法、质因数分解八大经典模型。每道题都有固定破题路径,强行背代码不如掌握“三看一验”法:一看输入输出关系,二看循环/递归结构,三看关键判断条件,最后用小数据验算。
3.1 因子计数与公约数:从暴力枚举到数学优化
第1题程序:输入n,统计1到n-1中能整除n的数的个数(即n的真因子个数)。代码for(int i=1;i<n;i++) if(n%i==0) cnt++;。表面简单,但陷阱在i<n而非i<=n,所以n自身不算。例如n=6,i=1,2,3,4,5,其中1,2,3整除6,cnt=3。破题关键:识别if(n%i==0)是因子判定,cnt++是计数器,循环范围决定统计对象。第2题更复杂:输入n,m,统计1到n中同时整除m和n的数的个数,且计数到6就停止。if(m%i==0 && n%i==0) cnt++; if(cnt==6) break;。这里cnt==6是提前退出条件,意味着只要找到6个公因子就停,不遍历完。例如n=12,m=18,公因子有1,2,3,6,只有4个,cnt=4。但选项里有6,说明需考虑更大n。答题策略:对这类题,永远先代入最小可行数据——设n=1,m=1,则i=1时满足,cnt=1后break,输出1。再试n=6,m=6,公因子1,2,3,6,cnt=4。这样快速排除错误选项。
3.2 回文与素数筛:状态压缩与边界处理的艺术
第4题回文判断函数f(int x):s=0,t=x; while(t!=0) {s=s*10+(t%10);t/=10;},即反转x得s,返回s==x。主程序统计1到n中回文数个数。关键在t%10取末位,t/=10去末位,s=s*10+末位构建反转数。例如x=121,t=121→s=010+1=1,t=12;t=12→s=110+2=12,t=1;t=1→s=1210+1=121,t=0;s==x,是回文。易错点:x=10时,t=10→s=010+0=0,t=1;t=1→s=0*10+1=1,t=0;s=1≠10,非回文,正确。第5题是埃氏筛变体:a[i*j]=1标记合数,a[i]初始0,筛后a[i]=1为合数,a[i]=0为素数。第13行a[i]=a[i-1]+(1-a[i])是前缀和:(1-a[i])当a[i]为素数时为1,合数时为0,所以a[n]是1到n中素数个数。破题口诀:“筛标记,前缀和,1减a[i]得素数标志”。
3.3 欧几里得与哥德巴赫:递归与数学定理的代码映射
第7题f(a,b)是标准欧几里得算法:if(b==0) return a; return f(b,a%b);,求gcd(a,b)。输入x,y,输出gcd(x,y)。例如x=48,y=18,f(48,18)→f(18,12)→f(12,6)→f(6,0)→6。核心洞察:递归终止条件b==0时返回a,正是gcd定义。第6题哥德巴赫验证:f(n)判素数,主程序if(f(n)) cout<<1; else if(n%2==0) cout<<2; else if(f(n-2)) cout<<2; else cout<<3;。这是基于“任一大于2的偶数可写成两个素数之和”(未证明但验证成立),奇数n若为素数输出1;若为偶数输出2;若为奇合数,尝试n-2是否为素数(即n=2+p),是则输出2;否则输出3(因奇合数可写为3+p1+p2)。例如n=9,f(9)=false(9=3×3),9%2!=0,f(7)=true,故输出2。答题心法:遇到数学定理题,先默写定理原文,再逐行对照代码实现——f(n-2)就是在验证“n-2是否为素数”这一子条件。
4. 易错题:五类高频失分点与避坑指南
校级预选赛的易错题不是难题,而是“你以为会,其实掉坑里”的题。海淀区教研组分析近3年试卷发现,以下五类错误占失分总数的68.7%。它们共同特点是:知识点极基础,但命题人用“视觉干扰”“概念偷换”“边界陷阱”三重手法制造错觉。避开它们,不需要多刷题,只需要建立“错题条件反射”。
4.1 变量命名:以数字开头、含空格、关键字冲突的“三不原则”
错在哪:第2题选项2abc(数字开头)、ab c(含空格)、int(关键字)均非法,但学生常选abc2或_abc为正确,忽略2abc明显违规。
为什么错:混淆“标识符组成字符”和“首字符规则”。C++规定标识符首字符必须是字母或下划线,后续字符可为字母、数字、下划线。2abc首字符是数字,直接非法;ab c含空格,空格不是合法字符;int是关键字,禁止用作变量名。
怎么答对:牢记“三不原则”——不以数字开头、不含空格/特殊符号、不与关键字同名。看到选项,先扫首字符:是数字?×;含空格?×;是int、char、for等?×。只剩abc2和_abc,二者均合法,但题目问“下列是合法的”,单选题必选其一,此时看题干是否暗示“最标准”,通常_abc更规范(以下划线开头常用于系统变量,但语法合法)。
4.2 赋值语句:=与==、字符与字符串、类型隐式转换的混淆
错在哪:第3题a==5;被误认为赋值,a="5";被当作合法(实为字符串指针赋给int),a='5';被怀疑非法(实为合法字符赋值)。
为什么错:==是关系运算符,产生bool值,不改变a;"5"是字符串字面量,类型const char*,不能赋给int;'5'是字符字面量,ASCII码53,可赋给int或char。学生错在未区分“值”与“地址”、“字符”与“字符串”。
怎么答对:遇到赋值题,立即启动“类型审查”:左边变量类型?右边表达式类型?是否兼容?a=5:int=int,✓;a==5:int==int,结果bool,不赋值,✗;a="5":int=const char*,类型不匹配,✗;a='5':int=char(char自动转int),✓。终极口诀:“赋值看右边类型,比较看双等号,字符串带双引号,字符带单引号”。
4.3 数组索引:二维数组行优先存储与越界访问的隐形陷阱
错在哪:第12题int a[3][2]={2,3,4,5,6,7},选项a[2][2]被误选,认为第三行第三列存在,实则a[2][1]是最后一元素7,a[2][2]越界。
为什么错:误将数学矩阵索引(行列从1开始)套用到C++数组(行列从0开始,且a[3][2]最大索引为a[2][1])。a[2][2]试图访问第3行第3列,但每行只有2列,列索引最大为1。
怎么答对:画表!行索引0,1,2;列索引0,1。填入:a[0][0]=2,a[0][1]=3,a[1][0]=4,a[1][1]=5,a[2][0]=6,a[2][1]=7。所有选项在此表中查,a[1][0]是4,a[1][1]是5,a[2][0]是6,a[2][1]是7,a[2][2]无定义。铁律:“声明a[m][n],行索引0~m-1,列索引0~n-1,越界必错”。
4.4 循环控制:break与continue作用域及while循环次数的误判
错在哪:第11题“while语句专用来实现不确定次数的循环功能”被误判为正确,忽略while(i<10)完全可实现确定次数。
为什么错:教材强调while的“条件驱动”特性,学生形成思维定势,忽视其语法本质是“先判后执”,次数由初始条件和循环体决定。break在嵌套循环中只跳出最内层,continue只跳过本次循环体剩余部分。
怎么答对:对循环题,问自己三个问题——①循环变量初值、终值、步长?②break在哪个循环内?③continue后是否还执行循环体后续语句?例如第8题while(1){i++; if(i%7!=0) continue; ... if(cnt==6) break;},continue跳过cnt统计,break跳出整个while。判定口诀:“break终结当前循环,continue跳过本轮剩余,while次数看条件,不限定‘不确定’”。
4.5 函数特性:递归、嵌套、主函数唯一性的概念混淆
错在哪:第9题“函数都可以自己调用自己”被误认为正确,忽略main函数不可递归调用(C++标准禁止);“函数不支持嵌套”被误判为错误,混淆“定义嵌套”与“调用嵌套”。
为什么错:递归要求函数能调用自身,但main是特殊函数,标准禁止其递归;C++允许函数A调用函数B,B调用A(间接递归),也允许f()调用g(),g()调用f(),但不允许在f()内部定义g()(即定义嵌套)。
怎么答对:死记硬背三条铁律——①主函数main不可递归(main()调用main()非法);②函数可递归调用(f()调用f()合法,如阶乘);③C++不支持函数内定义函数(即无嵌套定义),但支持函数间相互调用(即嵌套调用)。题干“函数不支持嵌套”指定义嵌套,故正确。
5. 问题建模题:四类现实场景的数学翻译与约束求解
问题建模题是校级预选赛的压轴戏,它把编程思维拉回数学本质:将自然语言描述的现实约束,精准翻译为数学不等式或组合公式。1103卷四道题分别对应离散位置调度、资源并行分配、概率空间枚举、极值路径规划四大模型。它们不考代码,考你能否在3分钟内完成“题干→约束→公式→答案”的四步转化。核心能力不是计算,是“语言到数学的翻译力”。
5.1 手机图标调度:屏幕分页与位置交换的离散建模
第一题手机菜单:n个APP,每屏k个,APP编号1~n,初始位置序列p[1..n](p[i]表示APP i在第p[i]个位置),启动序列q[1..m](q[j]表示第j个要启动的APP编号)。操作包括:滚动到APP所在屏幕(|屏幕号-当前屏幕号|次),双击启动(1次),启动后APP与前一个APP位置交换(若不在首位)。求总操作数。
破题关键:①APP i所在屏幕号 =ceil(p[i]/k)(向上取整);②初始当前屏幕=1;③启动APP q[j]后,更新位置:若p[q[j]]>1,则交换p[q[j]]与p[q[j]]-1位置上的APP编号。翻译步骤:先算每个q[j]的屏幕号,累加滚动距离;再模拟交换,更新后续APP位置。例如n=6,k=3,p=[1,2,3,4,5,6],q=[3,1]:APP3在位置3,屏幕1,滚动|1-1|=0,双击1次,启动后与位置2交换,p变为[1,3,2,4,5,6];APP1在位置1,屏幕1,滚动0,双击1次,总操作2次。核心公式:“屏幕号 = (位置-1)/k +1”,整数除法向上取整用(pos+k-1)/k。
5.2 视频压缩调度:服务器并行与队列等待的时间线建模
第二题视频压缩:s台服务器,v个视频,第i个视频上传时间为t[i],长度l[i](除第1、2个为5分钟,其余为1分钟),每台服务器1秒压缩1分钟视频(即压缩速率1分钟/秒)。求各视频完成时间。
破题关键:这是典型的“多服务器任务调度”。每个视频i的完成时间 = max(上传时间t[i], 所有服务器中最早空闲时间) + l[i]。服务器空闲时间用优先队列维护:初始s个0,每次取最小值,更新为max(取值, t[i]) + l[i]。例如s=2,v=3,t=[0,0,0],l=[5,5,1]:视频1取服务器1(空闲0),完成时间0+5=5;视频2取服务器2(空闲0),完成5;视频3取min(5,5)=5,完成5+1=6。建模口诀:“服务器空闲时间入堆,视频按上传时间排序,每次取最早空闲+自身耗时”。
5.3 掷骰子概率:多面体独立事件与取值范围的联合约束
第三题掷骰子:d个骰子,第i个有f[i]面(标1~f[i]),和为s。问哪个骰子的所有面值都可能出现。
破题关键:第i个骰子面值j可能出现,当且仅当存在其他骰子取值,使总和为s。即j的取值范围必须满足:s - sum_{k≠i} max_k ≤ j ≤ s - sum_{k≠i} min_k,其中max_k=f[k],min_k=1。所以j可取满1~f[i],需1 ≥ s - sum_{k≠i} f[k]且f[i] ≤ s - (d-1)。即s ≤ 1 + sum_{k≠i} f[k]且s ≥ f[i] + d - 1。简化策略:计算其他骰子最小和min_others=d-1,最大和max_others=sum_{k≠i} f[k],则i骰子可取j当且仅当s-j在[min_others, max_others]内。故j可取1~f[i],需[1,f[i]]⊆[s-max_others, s-min_others]。答题心法:“固定i骰子为j,看s-j能否被其余骰子凑出,范围由其余骰子极值决定”。
5.4 小猴爬山极值:差分约束与贪心路径的极限构造
第四题小猴爬山:10天,h[1]=h[10]=0,|h[i]-h[i-1]|≤3,求max h[i]。
破题关键:这是差分约束下的极值问题。要最大化某天高度,应让其前每天升3,后每天降3。从第1天到第k天,最多升3*(k-1);从第k天到第10天,最多降3*(10-k)。因h[10]=0,故h[k] ≤ 3*(10-k)。同时h[k] ≤ 3*(k-1)(从h[1]=0升)。所以h[k] ≤ min(3(k-1), 3(10-k))。k=1~10,计算min值:k=1→0,k=2→3,k=3→6,k=4→9,k=5→12,k=6→12,k=7→9,k=8→6,k=9→3,k=10→0。最大为12(k=5或6)。构造验证:h=[0,3,6,9,12,9,6,3,0,0],满足所有约束。通用公式:“n天首尾0,日差≤d,最高点为d * floor((n-1)/2)”,本题d=3,n=10,floor(9/2)=4,3*4=12。
6. 答题策略:从“看懂题”到“秒出答案”的三步固化流程
考场上最耽误时间的,不是不会做,而是反复读题、反复验算、反复怀疑自己。海淀区资深教练总结:顶尖选手和普通选手的差距,不在知识量,而在答题动作的肌肉记忆。我把1103卷所有题型压缩成一套三步流程,每天用3道真题固化,坚持一周,你会发现自己看题3秒内就能定位考点、5秒内写出关键公式、10秒内锁定答案。这不是玄学,是把认知过程变成条件反射。
6.1 第一步:题干关键词扫描与考点锚定(≤3秒)
拿到题,视线只扫三处:题干动词、数字参数、特殊符号。例如第6题“将n人分成三组,任意两组人数差≤1”,动词“分组”+数字“三组”+约束“差≤1”,立刻锚定“整数划分”考点;第10题“字符型变量能否参加算术运算”,动词“参加”+对象“算术运算”,锚定“ASCII隐式转换”;第7题“a[1][1]的值”,符号[ ][ ]+数字,锚定“二维数组内存布局”。训练方法:打印1103卷,遮住选项,只看题干,用红笔圈出上述三要素,然后闭眼说出考点名称。每天10题,3天即可形成条件反射。我带过的某学生,初期总在第3题a==5;上犹豫,用此法训练后,看到==立刻反应“关系运算,非赋值”,再不纠结。
6.2 第二步:最小数据验算与选项排除(≤15秒)
绝不代入大数!永远用最小可行数据。第1题n=6,第2题n=6,m=6,第4题n=10,第8题找第一个满足cnt==6的i。例如第8题while(1){i++; if(i%7!=0) continue; ... if(cnt==6) break;},i从1开始,i=7时cnt=1(7的因子1,7,但循环i<n=7,只i=1~6,7%1==0,cnt++,所以i=7时cnt=1),继续i=14,cnt=2(14因子1,2,7,14,但i<14,只1,2,7,cnt=3?不对,重新看:程序中for(int j=2;j<i;j++) if(i%j==0) cnt++;,cnt是i的真因子个数(不含1和i自身)。i=7,j=2~6,7%j≠0,cnt=0;i=14,j=2~13,14%2==0,14%7==0,cnt=2。所以cnt=6需找有6个真因子的数。最小是?i=24,真因子2,
本文还有配套的精品资源,点击获取