快速计算乘法法则

简便算法的原理

我们发现乘法一共只有两种,分别是两因数和为奇数与和为偶数。和为奇数的两数之和总可以拆成两个相邻的数(如 13 = 6 + 7 13 = 6+7 13=6+7),和为偶数的两数之和总可以拆成两个相同的数(如 12 = 6 + 6 12 = 6+6 12=6+6)。不难发现和相同的一组数的乘积是有某种规律的。

  1. 先看和为偶数的:
    在这里插入图片描述

不难发现,与最大值的因数相差 n n n 时,乘积相差 n 2 n^2 n2

2.再看和为奇数的:
在这里插入图片描述
与最大值的因数中较大的数相差 n n n 时,乘积相差 n ( n + 1 ) n(n+1) n(n+1)

算法的实现

可以将原算式转化为和相同的其他算式(最好是凑整),用两个算式与最大值的关系进行调整。
基本公式:原算式 = 新算式 + 新算式与最大值的差 - 原算式与最大值的差。同样分为和为奇数与和为偶数分别进行推导。本部分只推导调整值(即新算式与最大值的差 - 原算式与最大值的差)。

1.和为偶数

这部分相对简单,所以放在了前面。
设最大值时的因数为 x x x,原算式较大因数为 b b b,调整后的较大数与原较大数的差为 y y y(如原式为 41 × 87 41 \times 87 41×87,新式为 28 × 100 28 \times 100 28×100,则 y = 13 y = 13 y=13)。根据上面的结论,原算式与最大值的差为 ( b − x ) 2 (b-x)^2 (bx)2,新算式与最大值的差为 ( b + y − x ) 2 (b+y-x)^2 (b+yx)2。则调整值为 ( b + y − x ) 2 − ( b − x ) 2 = y [ 2 ( b − x ) + y ] (b+y-x)^2 - (b-x)^2 = y[2(b-x)+y] (b+yx)2(bx)2=y[2(bx)+y]

2.和为奇数

设最接近时较大数为 x x x b , y b,y b,y 定义同上。原算式与最大值的差为 ( b − x ) ( b − x + 1 ) (b-x)(b-x+1) (bx)(bx+1),新算式与最大值的差为 ( b + y − x ) ( b + y − x + 1 ) (b+y-x)(b+y-x+1) (b+yx)(b+yx+1)。调整值为 ( b + y − x ) ( b + y − x + 1 ) − ( b − x ) ( b − x + 1 ) = y ( b − x ) + y ( b − x + 1 ) + y 2 = y [ 2 ( b − x ) + y + 1 ] (b+y-x)(b+y-x+1)-(b-x)(b-x+1) = y(b-x)+y(b-x+1)+y^2 = y[2(b-x)+y+1] (b+yx)(b+yx+1)(bx)(bx+1)=y(bx)+y(bx+1)+y2=y[2(bx)+y+1]

3.总结及注意事项

  1. 当调整向远离最大值方向进行时 y y y 为正,向靠近最大值方向进行时 y y y 为负。
  2. 两个基本公式:
    和为偶数时:原算式=新算式+ y [ 2 ( b − x ) + y ] y[2(b-x)+y] y[2(bx)+y]
    和为奇数时:原算式=新算式+ y [ 2 ( b − x ) + y + 1 ] y[2(b-x)+y+1] y[2(bx)+y+1]
    3.公式的拓展:
    如果令 x x x 为最大值时较小的因数, a a a 为原算式中较小的因数,则两个调整值也可分别写作 y [ 2 ( x − a ) + y ] y[2(x-a)+y] y[2(xa)+y] 以及 y [ 2 ( x − a ) + y + 1 ] y[2(x-a)+y+1] y[2(xa)+y+1]

实战演练

计算 578 × 739 578 \times 739 578×739
step 1:判断,和为奇数, x = ⌈ 578 + 739 2 ⌉ = 659 x = \lceil \frac{578+739}{2} \rceil = 659 x=2578+739=659
step 2:写出新算式,新算式可为 517 × 800 = 413600 517 \times 800 = 413600 517×800=413600,此时 y = 61 y = 61 y=61
step 3:计算调整值,调整值为 61 × [ 2 × ( 739 − 659 ) + 61 + 1 ] = 61 × 222 = 13542 61 \times [2 \times(739-659)+61+1] = 61 \times222 = 13542 61×[2×(739659)+61+1]=61×222=13542
step 4:加和,原式的结果为 413600 + 13542 = 427142 413600 + 13542 = 427142 413600+13542=427142
这个方法 100% 有效,因为是经过数学推导得到的。背下两组公式,相信你的计算速度会有很大提升。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

庄荣涛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值