判断一个数是不是质数? 看起来简单。但,未必能做的很好,特别是对于初学的小朋友。 借此,看看数学里完成一件事情的方向性要求。
比如:
- 判断 329 是不是质数?
- 再小一点,判断 327 是不是质数?
- 再大一点,判断 331 是不是质数?
这个问题,在最近和小朋友上课时碰到。让他/她们找出100以内的质数,找得大差不差。但,详细询问如何判断61、91是不是质数的时候,并不能给出清晰方法。小朋友们的思路大抵是:充分研判一阵子,如果不能发现被分解,就过。至于这个“研判”的清晰方法是什么、这个“充分”怎么算充分,并不清楚。

关于方法的“清晰”
我们解题,思路清晰,这是基础要求。对于新问题,可以是解题后、讨论后再清晰。 这是小朋友们首先需要进步的点。
他们的问题,尚不是做的好不好,而是:没有意识到 “清晰”(的思路),这是一个要求。 他们凭借朴素的认知,努力的完成作业,若完美便完美,若有瑕疵便模糊的归结为没做好——小孩子语义上的没做好,是指“结果”,并不知道从“过程”上找到没做好的点,不知道,需要把清晰的思路确定下来(很多高年级学生,也一样意识不强)。
这个“清晰”,指大脑里有个明确的定论(甚至可以不准确、不完善、不简洁,但要有清晰的想法知道一步一步做什么)。比如,针对“判断质数” 判断329是否质数,清晰的方法:从2到这个数,每个都检查一遍,看是否能整除
这个方法,清晰明了; 甚至,还准确。 但显然,不够简洁。
简洁 - 第一个简化
判断329是否质数,简化的方法:从2到329之间的所有质数,分别检查一遍是否整除
一下子,检查工作少了很多
这个简化如何想到的?——这是个有价值的问题,能锻炼思维能力。 简化意味着去掉重复。 直接想法,如果一个检查包含另一个检查(更严格),或这相互替代,那么可以少检查一个。
道理是什么? —— 有两种解释
第一个解释 从2开始,如果2不能整车,检查3, 如果3不能整除,检查4(不对,4无需检查,因为2都不能整除) 如果3不能整除,检查5 如果5不能整除,检查6(不对,6无需检查,因为2或3都不能整除) 如果5不能整除,检查7 … 因此,可以看到,只需要检查质数
还有一种解释 从2到328的所有数里面,如果所有质数都检查过了(且没有整除),那么其他数——剩余合数——都无需检查。道理如上。 这个解释,更简洁;但这个解释,需要有 整体分析
结果与过程 和 整体分析 的关系
两种解释,又类似于 结果与过程 的却别。 前者,基于过程思考;后者,基于结果思考。 基于过程思考,更偏拆分;基于结果思考,更偏整体。
简洁 - 再次简化
上面已经把“检查2到328所有的数”,简化为“检2到328所有质数” 那么,所有的质数,是否全都需要呢? 答案是:并不 我们只需要检查“2到328的质数中,比较小的一部分,即可”
判断329是否质数,最优的方法:检查从2到329之间的所有质数中比较小那一部分 具体规则如下 100以内,只需检查11以下的质数,2、3、5、7,即可 200以内,只需检查17以下的质数,2、3、5、7、11、13,即可 300以内,只需检查19以下的质数,2、3、5、7、11、13、17,即可 400以内,只需检查23以下的质数,2、3、5、7、11、13、17、19,即可 1000以内,只需检查37以下的质数,2、3、5、7、11、13、19、23、29、31,即可
这个截止点,如何确定? 比如,3729,只需要尽可能小的估计一个数a,满足a×a>3729 那么,a就是截止点——只检查比a小的质数即可 这里,a可以是70。理论上越小越好,实际上估计整数即可。因为找最小的计算量比较大,而质数也没有那么多,往高了估计一点影响很小,但介于估计本身的计算量。 看明白下面原因,会更容易理解这个截止点。
为什么?以100为例 考虑到100<11×11,若100=a×b,则a、b中必然有一个数<11 若这个数是质数,必然<11;若是合数,继续分解,更加<11 因此,只要11以下的质数不能整除这个数,这个数就可以判定为质数
这个道理,不难;但现实中,的确不是每个学生都了解。似乎校内老师也不太重视。窃以为,质数学习时这个要学,老师要讲到,学生要思考明白。以免数学知识学了个样子,真正好东西没触及。