用完美数的数字之美激发学生学习C语言编程的兴趣
2020-06-08崔孝凤
崔孝凤
摘要:对于c语言的初学者来说,激发出学习c语言的兴趣至关重要,该文通过探讨完美数的多种实现方法的案例教学,同时列举完美数特有性质,激发学生的学习兴趣,提高教学质量。
关键词:c语言;完美数;案例教学;兴趣
中图分类号:G642 文献标识码:A
文章编号:1009-3044(2020)10-0084-02
1概述
兴趣是最好的老师,学习c语言自然也不例外。非计算机专业的学生学习c语言难度确实不小,如何激发学生的学习兴趣是摆在每一位任课教师面前的一项重要的任务。C语言编程中有很多题目是很有意思的,如果教师适当地挖掘一下这些题目的前因后果,学生就会容易产生兴趣,从而调动起学习积极性,当学习积极性一旦调动了起来,何愁学习不好呢?本文通过研究用C语言实现完美数的输出的算法以及源代码,同时对完美数的特征做一简单介绍,主要目的在于激发学生的学习兴趣,提高教学质量。
2完美数的定义
完美数,又称完全数或完备数,是一些特殊的自然数,它所有的真因子(即除了自身以外的约数)之和恰好等于它本身。例如数字6是最小的完美数,它的真因子有1、2、3,这三个数之和正好与6相等,数字28是第二个完美数,它的真因子有1、2、4、7、14,这5个数之和也正好与28相等。完美数的数量是比较少的,千百年来一直吸引着无数的数学家及其爱好者不懈地寻找着,目前人们共找到了仅仅五十多个完美数,由此可见,在浩瀚的数字海洋中完美数确实是稀少的,所以有“数论宝库中的‘钻石”之称。
3完美数带给我们的美感
首先完美数本身的定义就容易让人自然地产生一种美感,试想一下,其真因子之和与其本身相等,这真的是大自然的神奇之作,让我们惊叹之余,心中的美感油然而生,对于c语言的学习者来说当然也不例外。另外,完美数还有一些特殊的性质,比如都是以6或者8结尾等,教师给学生讲课时不妨稍微扩展一下完美数的这些特殊的性质,这样,自然能够吸引学生,学生一定会很想知道用c语言如何编程能求出更多的完美数。从而激发学生学习的兴趣,提高教学质量。
4用C语言编程输出完美数
使用计算机枚举法,只要依次找出某个数的所有真因子,然后验证一下是否所有真因子之和与该数本身相等即可,若相等即为完美数,借助于计算机的高速度,这个方法是可行的,经过不少数学家及业余爱好者研究,到2018年12月6日为止,一共找到了51个完美数。下面研究一下用C语言实现一个上限n(某个整数,比如10000),输出1至n之间的所有完美数及其个数的算法以及源代码。
4.1方法一:使用简单的穷举法算法概述:
第一步:输入上限n的值;
第二步:查找出所有n的真因子;
第三步:判断所有真因子之和是否与n相等,若相等则将其输出并将完美数的数量加一,否则不输出。
第四步:输出完美数的个数。
C语言源代码如下:
//输入1至n之间的所有完美数及其个数
4.2方法二:改进的穷举法
上述程序中求某数的因子时,采用从1到i-1范围内进行遍历的方法,一個数一个数地去试。这种方法可以做到没有遗漏,但是效率不高。
对于某一整数来说,当n为偶数时其最大真因子为n/2,当n为奇数时其最大真因子小于n/2,在n/2-n-1范围内不存在n的真因子。据此,我们可以把遍历范围缩小至1-n/2,这样程序效率可以提高一倍。具体到代码的修改只要把程序中的第2个for循环语句for(j=1;j
4.3方法三:使用函数实现
上面的算法没有使用函数,学习函数时仍然可以使用此例,设计名称为f_wms的函数,功能为判断形参k是否为完美数。如果是完美数则返回1,否则返回0。在主函数中调用此函数即可。
C语言源代码如下:
//输出1至n之间的所有完美数及其个数
5结束语
以上对完美数的定义、特有性质及用c语言输出算法及代码进行了探究,相信必然能引起学生的浓厚的学习兴趣,提高C语言的教学质量。