C++编程《第09课 大整数的除法问题》教学设计.docxVIP

  • 2
  • 0
  • 约4.38千字
  • 约 7页
  • 2026-03-11 发布于广西
  • 举报

C++编程《第09课 大整数的除法问题》教学设计.docx

PAGE

PAGE1

大整数的除法问题

教学目标

1.知识与技能

学习大整数除以普通整数的算法

用余数定理解决大整数除以普通整数的余数问题

学习大整数除以大整数的算法

2.过程与方法:

学习流程:讲授——模仿——练习

通过课堂练习,巩固课堂内容。

教学重点、难点

【重点】

模拟竖式计算大整数除以普通整数的算法

模拟竖式计算大整数除以大整数的算法

【难点】

模拟竖式计算大整数除以大整数的商和余数

课时安排

课时安排:120分钟

四、上课准备

课程相关ppt、白板、白板笔、积分卡

课前检查电脑、投影仪、网络是否有故障,及时修复。

五、教学活动

活动时长

教学活动

注意事项

课前准备

老师准备学生电脑,保证电脑能正常使用;打开投影仪,打开上课课件,以最饱满的热情迎接学生!

提前10分钟准备

开场白

欢迎各位同学回到吉码信息学课堂。

引入

高精度计算中,过去我们一般不接触除法问题,原因是除法的代码量较大,而且编程难度较高。现在,我们需要把这个问题研究透彻。除法问题中,大整数除以普通整数的问题比较常见,问题复杂度也比较低,只要能够把问题转化为数学问题即可解决。高精度数除以高精度数,用于大整数的因数分解中显得很慢,在其他方面应用不多。

学习内容(1)

(一)大整数除以普通数

大整数的除法由于运算顺序和复杂度的原因,不得不采用与其他计算不同的大整数存储方式。高精度数除以普通数字,采取的方法是模拟竖式除法的按位相除法而且不采用倒序转存方式,但第0位置仍然用来存储位数;

核心代码:

c[i]=(x*10+a[i])/b;

x=(x*10+a[i])%b;

x是余数。

因为除数是普通整数,所以x也是普通整数。

示范代码:ppt5-6

【提问】如果商并不是从第一位开始的,需要特殊处理吗?比如123/9,商不是从最高位就有的,而是从次高位开始有。这种情况需要特殊处理吗?

【参考答案】需要去除前导0,但不需要预判,按部就班处理就可以了。在最高位上,如果商为0,会把数字计入余数继续计算。所以后面有去除前导0的处理。

ppt7:高精度数除以普通整数的优化

实质上,在高精度除以普通整数运算时候,存储高精度数的数组元素可以不仅仅只保留一个数字,而采取保留多位数(例如一个整型或长整型数据等),这样,在做运算(特别是乘法运算)时,可以减少很多操作次数。例如下图就是采用4位保存的除法运算,其他运算也类似。具体程序可以修改上述例题予以解决,程序请同学们课后独立完成。注意,如果每四位压缩在一个存储单元,那么如果一个单位的商不足四位时要用0补足四位。

上面的压位,其实就是把n位数作为1位来处理,运算的时候算法步骤不需要做大的变动。但在输出的时候,如果分的是四位作为一个数位(即万进制,满万进位)得到的结果在内存中是这样的:274,234,0;按照万进制,实际上的结果应该是这样的:

27402340000;最高位本来也要补0,但因为是前导0所以去掉了。也就是说,每一个数位都要补齐万进制表示,少于4位的要补0.如果不这样做,输出的结果就会发生错误。这个输出我们可以借助printf()函数很方便做到。

二、大整数除以普通整数的余数

大整数运算很麻烦,但如果只是需要做大整数t除以某个一位数g的余数时,我们可以采用余数定理,避开高精度计算。

示例:

计算1244%9时,把1244拆分为若干小整数的表达式,分步骤得到1244,再利用余数定理在此过程中取余数,从而避开高精度计算。

1*10+2=12

12*10+4=124

124*10+4=1244

原来的计算式:1244/9=1382

现在可以这样计算:

1244%9=(((1*10)+2)%9*10+4)%9*10+4)%9

=((12%9*10+4)%9*10+4)%9

=(34%9*10+4)%9

=74%9

=2

输入一个大整数和一个普通整数,计算大整数除以普通整数的余数的核心代码:

chara[1000];

intb,r=0;

cinab;

intl=strlen(a);

for(inti=0;il;i++){

r=(r*10+a[i]-0)%b;

}

coutb;

在白板上写竖式,分析算法过程。

这个问题在高精度除以高精度时也类似。

具体程序留给同学们课后独立完成。包括前面的乘法、加法、减法也可以用这种“压位”算法,可以提高数倍的效率。

这里控制在1小时左右。如果有多的时间,让学生实现“压位”的高精度除以低精度算法。

学习内容(2)

三、大整数除以大整数的商和余数

算法分析】

大整数除以普通整数是对被除数的每一位(这里

文档评论(0)

1亿VIP精品文档

相关文档