高精度计算
主要的方法是利用数组模拟计算比如:
高精度加法
12345678910111213 + 1111111111111111111
开两个数组存储:
a[]={3,1,2,1,1,1,0,1,9,8,7,6,5,4,3,2,1};
b[]={1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};
两个数组分别把数值倒存,在一位一位的加,每位加后判断是否大于10,在进位(注:如果太大的数值,可以考虑4位一存哦.) 注意下面的a1,b1,c1 为数组的长度
四位一存:
高精度减法
--SepHiRoTH 18:59 2009年5月17日(CST) 高精度乘法
四位一计算:
更快的算法需要借助FFT(也有人喜欢用NTT) 实现nlogn 高精度除法
只提供程序段,未处理循环小数。
--Taophee 22:24 2011年8月20日
请看到这个问题的OIers注意并及时给出正确解法,最近忙于琐事,拜托了,这个网站很久无人管理了。--SepHiRoTH 23:02 2011年7月30日(CST)
算法已改。--Taophee 22:24 2011年8月20日
做一下循环小数,这需要加一段,既然做了就把它做好怎样?--SepHiRoTH 08:20 2011年8月21日(CST)
高精度阶乘
作为一种高精度乘法的扩展算法,实质为高精度乘低精度,算法如下:
--SepHiRoTH 18:59 2009年5月17日(CST)
高精度快速幂
主要用了二分的手段。中间的乘法就看上面的吧。--By Clarkok
高精度计算 由于计算机具有运算速度快,计算精度高的特点,许多过去由人来完成的烦琐、复杂的数学计算,现在都可以由计算机来代替。 计算机计算结果的精度,通常要受到计算机硬件环境的限制。例如,pascal 要计算的数字超过19位,计算机将按浮点形式输出;另一方面,计算机又有数的表示范围的限制,在一般的微型计算机上,实数的表示范围为l0-38 -l038。例如,在计算N!时,当N=21时计算结果就超过了这个范围,无法计算了。这是由计算机的硬件性质决定的,但是,我们可以通过程序设计的方法进行高精度计算(多位数计算)。 学习重点 1、掌握高精度加、减、乘、除法。 3、理解高精度除法运算中被除数、除数、商和余数之间的关系。 4、能编写相应的程序,解决生活中高精度问题。 学习过程 一、高精度计算的基本方法 用free pascal程序进行高精度计算,首先要处理好以下几个基本问题:【数据的输入与保存】 (1)一般采用字符串变量存储数据,然后用length函数测量字符串长度确定其位数。 (2)分离各位数位上的数字 分离各数位上的数通常采用正向存储的方法。以“163848192”为例,见下表:A[9] A[8] A[7] A[6] A[5] A[4] A[3] A[2] A[1] 1 6 3 8 4 8 1 9 2 基本原理是A[1]存放个位上的数字,A[2]存放十位上的数字,……依此类推。即下标小的元素存低位上的数字,下标大的元素存高位上的数字,这叫“下标与位权一致”原则。 【计算结果位数的确定】 (1)高精度加法:和的位数为两个加数中较大数的位数+1。 (2)高精度减法:差的位数为被减数和减数中较大数的位数。 (3)高精度乘法:积的位数为两个相乘的数的位数之和。 (4)高精度除法:商的位数按题目的要求确定。 【计算顺序与结果的输出】 高精度加、减、乘法,都是从低位到高位算起,而除法相反。输出结果都是从高位到低位的顺序,注意:高位上的零不输出(整数部分是零除外)。 高精度加法 【参考程序】 var a,b:array[1..10000] of byte; i,w,la,lb:integer;
分数乘法计算题 一、 计算下面各题 23 +25 ×512 38 ×49 -17 215 ×78 ×314 45 -(512 -118 ) 67 ×(712 ×29 ) 38 ×415 +715 ×37 二、 用简便方法计算下面各题 0.25×7.89×0.4 32×12.5×2.5 3.6×7.2+3.6×2.8 710 ×58 +710 ×38 24×(12 +13 -14 ) (78 +35 +1 10 )×40 75×376 63×564 98×597 88 ×3 87 38 ×23+38 82×79 -79 57 ×48+57 722 +21×722 (38 +712 )×24 215 ×36+215 ×24 (14 -15 )×60 ( 18 ×2 3 )×16×9 一、灵活计算下面各题 715 ×78 ×314 38 ×415 +715 36×(12 +13 +14 ) 16 ×47 +37 ×16 57×356 59 ×26+ 59 27 ×15+27 ×20 24×49×( 17 ×23 ) (34 -112 )×60 36 ×(14 +4 9 ) 1415 ×717 ×528 ×17 710 ×138 +710 ×78 710 ×37-7 10 ×17 二、我是小法官,对错我会判 1、分数乘法的意义与整数乘法的意义完全相同。( ) 2、一个数乘真分数,积小于这个数。( ) 3、一个大于零的数乘假分数,积一定比原数大。( ) 4、两个分数相乘,积一定小于其中任何一个分数。( ) 5、5米的17 与1米的5 7 相同。( ) 三、列式计算 15的56 减去34 是多少? 36减去它的2 9 是多少? 23 加上25 与514 的积是多少? 25个35 与 1 7 的21倍和是多少?
有理数的乘除法、乘方运算 练习题 一、有理数的乘除法 1、有理数乘法法则: (1)两数相乘,同号得正,异号得负,并把绝对值相乘; (2)任何数同0相乘都得0; — (3)多个有理数相乘: a :只要有一个因数为0,则积为0。 b :几个不为零的数相乘,积的符号由0的个数决定,当0的个数为奇数,则积为负, 当0的个数为偶数,则积为正。 2、乘法运算律:(1)乘法交换律;(2)乘法结合律;(3)乘法分配律。 3、有理数除法法则: (1)法则:除以一个数等于乘以这个数的倒数 (2)符号确定:两数相除,同号得正,异号得负,并把绝对值相除。 ~ (3)0除以任何一个非零数,等于0;0不能作除数! 二、有理数乘方: 1、n 个相同因数的积的运算,叫做乘方。乘方的结果叫做幂;用字母表示 a n a a a a 个????记作n a ,其中a 叫做底数,n 叫做指数,n a 的结果叫做幂;读法:n a 读作a 的n 次方。 2、正数的任何次幂都是正数,负数的奇次幂是负数,负数的偶次幂是正数。 。 练习题 一、选择题: 1、一个有理数和它的相反数之积( ) A .符号必为正 B .符号必为负 C .一定不大于零 D .一定不小于零 2、若0ab >,则下列说法中,正确的是( ) A .a ,b 之和大于0 B .a ,b 之和小于0 C .,a b m 同号 D .无法确定 ! 3、下列说法中,正确的是( ) A .两个有理数的乘积一定大于每一个因数。 B .若一个数的绝对值等于它本身,这个数一定是正数。 C .有理数的乘法就是求几个加数的和的运算。 D .两个连续自然数的积一定是一个偶数。 4、下列说法中,正确的是( )
分数乘除法的计算 一、知识梳理 1.意义:一个数乘分数,表示求这个数的几分之几是多少。 2.分数乘分数计算法则:分数乘分数,用分子乘分子,分母乘分母。 3.倒数的意义:乘积是1的两个数互为倒数。 4.分数除法的意义和整数除法的意义相同,都是已知两个因数的积与其中一个因数,求另一个因数的运算。 5.无论是整数除以分数,还是分数除以分数,都可以转化成乘法来计算,也就是说除以一个不等于0的数,等于乘上这个数的倒数。 二、方法归纳 c b a ?=b ac d c b a ?= bd ac ÷b a d c =c d b a ?=bc ad
三、课堂精讲: 【课前复习】 1. 5+5+5=( )×( )=( ),表示: 。 整数乘法的意义:求几个相同加数的和的简便运算. 2.计算:用加法算: 92+92+92=9 222++=96=32 用乘法算:92×( ) 3.整数除法的意义是什么? 4.根据算式32×25=800写出两道除法算式。 5.填空。 (1)30÷5表示把30平均分成( )份,求其中( )份是多少。 (2)求18的 3 1 是多少,可以用算式18×( ),也可以用算式18÷( ),所以18÷3=18×( )。 【新授】 (一).分数乘法的意义及法则: 1、分数乘整数 (1)分数乘整数的意义可以理解为求这个整数的几分之几是多少或几个相同加数的和或 表示一个数的几倍是多少。 (2)分数乘整数的计算法则:分数乘整数,用 作分子,分 母 。分数乘分数,用 作分子, 作分母. 2、分数乘分数 (1)意义:一个数乘分数,表示求这个数的几分之几是多少。 (2)分数乘分数计算法则:分数乘分数,用分子乘分子,分母乘分母。 例1.说出下面各题的意义和得数。 10 1×7 32×4 15×157 6×85