快速计算乘法法则
- 简便算法的原理
- 算法的实现
- 1.和为偶数
- 2.和为奇数
- 3.总结及注意事项
 
- 实战演练
 
简便算法的原理
我们发现乘法一共只有两种,分别是两因数和为奇数与和为偶数。和为奇数的两数之和总可以拆成两个相邻的数(如 13 = 6 + 7 13 = 6+7 13=6+7),和为偶数的两数之和总可以拆成两个相同的数(如 12 = 6 + 6 12 = 6+6 12=6+6)。不难发现和相同的一组数的乘积是有某种规律的。
- 先看和为偶数的:
  
不难发现,与最大值的因数相差 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 
       
      
    (b−x)2,新算式与最大值的差为  
     
      
       
       
         ( 
        
       
         b 
        
       
         + 
        
       
         y 
        
       
         − 
        
       
         x 
        
        
        
          ) 
         
        
          2 
         
        
       
      
        (b+y-x)^2 
       
      
    (b+y−x)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+y−x)2−(b−x)2=y[2(b−x)+y]。
2.和为奇数
设最接近时较大数为 x x x, b , y b,y b,y 定义同上。原算式与最大值的差为 ( b − x ) ( b − x + 1 ) (b-x)(b-x+1) (b−x)(b−x+1),新算式与最大值的差为 ( b + y − x ) ( b + y − x + 1 ) (b+y-x)(b+y-x+1) (b+y−x)(b+y−x+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+y−x)(b+y−x+1)−(b−x)(b−x+1)=y(b−x)+y(b−x+1)+y2=y[2(b−x)+y+1]。
3.总结及注意事项
- 当调整向远离最大值方向进行时 y y y 为正,向靠近最大值方向进行时 y y y 为负。
- 两个基本公式:
 和为偶数时:原算式=新算式+ y [ 2 ( b − x ) + y ] y[2(b-x)+y] y[2(b−x)+y]。
 和为奇数时:原算式=新算式+ y [ 2 ( b − x ) + y + 1 ] y[2(b-x)+y+1] y[2(b−x)+y+1]。
 3.公式的拓展:
 如果令 x x x 为最大值时较小的因数, a a a 为原算式中较小的因数,则两个调整值也可分别写作 y [ 2 ( x − a ) + y ] y[2(x-a)+y] y[2(x−a)+y] 以及 y [ 2 ( x − a ) + y + 1 ] y[2(x-a)+y+1] y[2(x−a)+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×(739−659)+61+1]=61×222=13542。
 step 4:加和,原式的结果为  
     
      
       
       
         413600 
        
       
         + 
        
       
         13542 
        
       
         = 
        
       
         427142 
        
       
      
        413600 + 13542 = 427142 
       
      
    413600+13542=427142。
 这个方法 100% 有效,因为是经过数学推导得到的。背下两组公式,相信你的计算速度会有很大提升。



















