浅谈数学在C语言编程中的应用
【】【】C语言对学习者的数学基础要求较高对一部分学生来说学好C语言有一定的困难。本文就本专业知识和自身对C语言的学习经验对数学在C语言编程中的应用做出讲解,以帮助部分学生更好的学习C语言。
1 与数学的关系C语言
要知道C语言与数学的关系可以通过以下几个关系来得出。
1.1:编程语言与程序的关系
程序(program)是为实现特定目标或解决特定问题而用计算机语言编写的命令序列的集合。为实现预期目的而进行操作的一系列语句和指令。一般分为系统程序和应用程序两大类。程序就是为使电子计算机执行一个或多个操作,或执行某一任务,按序设计的计算机指令的集合计算机语言的种类非常的多,总的来说可以分成机器语言,汇编语言,高级语言三大类。 如果按语种分,可以分为英文符号语言和汉语符号语言两类。目前通用的编程语言有两种形式:汇编语言和高级语言。
“从数学发展的历史来看,算法的概念古已有之。比如,在西方数学中很早就有了欧几里得算法,而中国古代数学中蕴含着更为丰富的算法内容和思想。割圆术,秦九韶算法等等都是很经典的算法。通过学习算法发展有条理的思考与表达的能力,提高逻辑思维能力。”并且在教材中给出了算法的定义。算法(algorithm)一词出现于12世纪,指的是用阿拉伯数字进行算术运算的过程。在数学中,算法通常是指按照一定规则解决某一类问题的明确和有限的步骤。现在,算法通常可以编成计算机程序,让计算机执行并解决问题.这样算法与数学的关系就已经十分的明确了。
总结:综上所述,C语言作为编程语言之一,是为生产实现程序的工具,而无论构成程序的数据结构还是算法都属于数学范畴。如果把程序比作产品,那么数学内容就是原料和零件,而C语言就是把原料和零件加工组装成品的工具和机器。
2 数学的思想方法在C语言中的应用
2.1辗转相除法
例1(1) 设计一个算法,判断7是否为质数。
(2)设计一个算法,判断35是否为质数。
算法分析:
(1)根据质数的定义,可以这样判断:依次用2~6除7,如果它们中有一个能整除7,则7不是质数,否则7是质数。
根据以上分析,可写出如下算法:
第一步,用2除7,得到余数1。因为余数不为0,所以2不能整除7.
第二步,用3除7,得到余数1。因为余数不为0,所以3不能整除7.
第三步,用4除7,得到余数3。因为余数不为0,所以4不能整除7.
第四步,用5除7,得到余数2。因为余数不为0,所以5不能整除7.
第五步,用6除7,得到余数1。因为余数不为0,所以6不能整除7.
因此,7是质数。
(2)类似地,可写出“判断35是否为质数”的算法:
第一步,用2除35,得到余数1。因为余数不为0,所以2不能整除35.
第二步,用3除35,得到余数2。因为余数不为0,所以3不能整除35.
第三步,用4除35,得到余数3。因为余数不为0,所以4不能整除35.
第四步,用5除35,得到余数0。因为余数为0,所以5能整除35.
因此,35不是质数。
对于任意的整数n(n>2),若用i表示2~(n-1)中的任意整数,则“判断n是否为质数”的算法包含下面的重复操作:
用i除n,得到余数r。判断余数r是否为0,若是,则n不是质数;否则,将i的值增加1,再执行同样的操作。
这个操作一直要进行到i的值等于(n-1)为止。因此,“判断n是否为质数”的算法可以写成:
第一步,给定大于2的整数n。
第二步,令i=2。
第三步,用i除n,得到余数r。
第四步,判断“i=o”是否成立。若是,则n不是质数,结束算法;否则,将i的值增加1,仍用i表示。
第五步,判断“i>(n-1)”是否成立。若是,则n是质数,结束算法;否则,返回第三步。
2.2 更相减损术
《九章算术》是中国古代的数学专著,其中的“更相减损术”也可以用来求两个数的最大公约数,即“可半者半之,不可半者,副置分母子之数,以少减多,更相减损,求其等也。以等数约之。”
翻译为现代语言如下:
第一步,任意给定两个正整数,判断它们是否都是偶数。若是,用2简约;若不是,执行第二步。
第二步,以较大的数减去较小的数,接着把差与较小的数比较,并以大数减小数。继续这个操作,直到所得的数相等为止,则这个数或这个数与简约的数的乘积就是所求的最大公约数。
例题2用更相减损术求98与63的最大公约数。
解:由于63不是偶数,把98和63以大数减小数,并辗转相减如下:
98-86=35
63-35=28
36-28=7
28-7=21
21-7=14
14-7=7
所以,98和63的最大公约数等于7.
2.3 秦九韶算法
怎样求多项式f(x)=x5+x4+x3+x2+x+1当x=5时的值?
一个自然的做法是把5带入多项式f(x),计算各项的值,然后把它们加起来。这时,我们一共做了1+2+3+4=10次乘法运算,5次加