首先声明,本人对中国雨人少年毫无意见,只是对这个节目的夸张表演有点烦,忍不住说几句话。
事情起因于周末看的江苏卫视的电视节目“最强大脑”,对这个节目本没啥兴趣,起始只是觉得表演嘉宾和裁判、“科学家”,演的有点夸张。但是夫人对节目很推崇,说有数学计算的天才,拉着看了一期。
这期最出名的是少年周玮的数学计算表演,心算16位数开14次方,还请了某大学的数学教授来当绿叶陪衬。当计算出结果的时候,众多嘉宾和某科学家,激动的这叫一个泪流满面,语无伦次啊。
出于一个职业对数字的敏感,还有俺也学过初中数学啊,本能就在想这个结果是怎么算出来的?
通常来说,开N次方是一个非常复杂的运算。除了查表法,如果采用硬性计算的话,有一个公式:
(X*X+A)/(2*X)=X
A代表被开方数,X代表开方数,可以看出上式是一个恒等式,所以只需要随意带入一个X值就可以计算出更准确的X值了。
例如:将7开平方:
(1*1+7)/(2*1)=4
(4*4+7)/(2*4)=2.875
(2.875*2.875+7)/(2*2.875)=2.654189……
(2.65*2.65+7)/(2*2.65)=2.645754……
以此类推,7的开方数为:2.64575131106……
此方法也同样适用于更高次的开方,比如开立方。相应的只要把算式改成(X^3+A)/(2*X^2)=X就行了。
例如:将7开立方:
(1^3+7)/(2*1^2)=4
(4^3+7)/(2*4^2)=2.21875
(2.21875^3+7)/(2*2.21875^2)=1.822216……
(1.822^3+7)/(2*1.822^2)=1.96543……
以此类推,7开立方的准确值为:1.9129311827723891011991168395475……
如果这样计算来看,开14次方的运算量会多么的巨大啊,真的只有电脑和天才能短时间计算出来了。
但是,有没有更好点的算法呢,运算量不那么大的?有,看这个笔算的方式:
笔算开n次方的方法 (抄自互联网)
旧的初中教材里有笔算开平方的方法,我觉得笔算开n次方的方法也不难,就介绍我知道的笔算开n次方的方法:
1、把被开方的整数部分从个位起向左每隔n位为一段,把开方的小数部分从小数点第一位起向由每隔n位为一段,用撇号分开;
2、根据左边第一段里的数,求得开n次算术根的最高位上的数,假设这个数为a;
3、从第一段的数减去求得的最高位上数的n次方,在它们的差的右边写上第二段数作为第一个余数;
4、把n(10a)^(n-1)去除第一个余数,所得的整数部分试商(如果这个最大整数大于或等于10,就用9做试商);
5、设试商为b。如果(10a+b)^n-(10a)^n小于或等于余数,这个试商就是n次算术根的第二位;如果(10a+b)^n-(10a)^n大于余数,就把试商逐次减1再试,直到(10a+b)^n-(10a)^n小于或等于余数为止。
6、用同样的方法,继续求n次算术跟的其它各位上的数(如果已经算了k位数数字,则a要取为全部k位数字)。
例如计算987654321987654321的五次算术根,就算到小数点后四位。
3 9 7 1. 1 9 2 9
5√987'65432'19876'54321.00000'00000'00000'00000
243
________________________________________________
744 65432......................................74465432/(5×30^4)整数部分是18,用9作试商
659 24199......................................39^5-30^5
_____________________________________________
85 41233 19876................................854123319876/(5×390^4)的整数部分是7,用7作试商
83 92970 61757................................397^5-390^5
____________________________________________
1 48262 58119 54321..........................1482625811954321/(5×3970^4)的整数部分是1,用1作试商
1 24265 57094 08851..........................3971^5-3970^5
___________________________________________
23997 01025 45470 00000....................23997010254547000000/(5×39710^4)的整数部分是1,用1作试商
12433 44352 06091 99551....................39711^5-39710^5
_________________________________________
11563 56673 39378 00449 00000..............1156356673393780044900000/(5×397110^4)的整数部分是9,用9作试商
11191 17001 57043 20516 21599..............397119^5-397110^5
_________________________________________
372 39671 82334 79932 78401 00000........3723967182334799327840100000/(5×3971190^4)的整数部分是2,用2作试商
248 70419 01386 56554 83574 43232........3971192^5-3971190^5
_______________________________________
123 69252 80948 23377 94826 56768 00000..123692528094823377948265676800000/(5×39711920^4)的整数部分是9,用9作试商
111 91704 90192 14028 71518 74119 30649..39711929^5-39711920^5
_______________________________________
11 77547 90756 09349 23307 82648 69351
这样就得到987654321987654321的五次算术根精确到小数点前四位为3971.1929。
说起来,第二个算法比第一个要简单很多,只有有1-2位整数(没有多位小数)的乘N次方运算,而且可以用较低的运算量,优先算出结果的第一、二、......位数字。如果计算结果增加到5、6位的数字以上,计算量就会飞速的上升,这时候反正俺的脑袋做这个心算铁定没戏。
那么还有没有更快的算法呢?
俺一直觉得人与人的智力差别应该没那么大,经过专门的练习按照一定的规则可以提高解决问题的速度,但是基本的加减乘除的运算,不太可能十倍、百倍的增加。如果真有人脑本来就可以提速百倍,那么在千万年的进化过程中,早就该显露出来了。这么多么多么巨大的进化优势啊。
一个研究计算机算法的,通常会对二进制的数字很了解。例如数字65536,程序员会直接想到2^16,4294967296会直接想到2^32次方,根本用不着一次次算。我们普通人脑子是算不了电脑那么快,但是某些情形下可以取巧的,可以靠记忆力啊,就像经常用就记下来的2的1-32次方的各个数字。
比如1-100之间所有数字的1-20次方,最大值已经达到40位数字,比节目中的16位大多了xx亿亿倍。这样也共有2000个数字,有心人还是可以硬记下来的。
好了,现在请专家随便出题吧,只要是结果不大于100,20次方以下的任意数字开方,张口就来(通过与记忆中的数字比较,反向查找,甚至熟了还可以多估算一位数字,这样就是3位数字了)。这就是俺“发明”的死记硬背查表法。哈哈,想来我们这些普通人,也可以在“专家”面前大大的炫耀一番了。
我们离天才或许并不遥远。
少年周玮的计算结果也是两位数字,可惜无法了解他是如何计算的,但如果在节目中他能将结果推算到5、6位以上的数字,那就确确实实的无与伦比的计算天才。再次想说,俺对周玮毫无意见,雨人生活很艰难应该得到更多的关爱。只是讨厌“专家”、“科学家”的夸张、做作。
事情起因于周末看的江苏卫视的电视节目“最强大脑”,对这个节目本没啥兴趣,起始只是觉得表演嘉宾和裁判、“科学家”,演的有点夸张。但是夫人对节目很推崇,说有数学计算的天才,拉着看了一期。
这期最出名的是少年周玮的数学计算表演,心算16位数开14次方,还请了某大学的数学教授来当绿叶陪衬。当计算出结果的时候,众多嘉宾和某科学家,激动的这叫一个泪流满面,语无伦次啊。
出于一个职业对数字的敏感,还有俺也学过初中数学啊,本能就在想这个结果是怎么算出来的?
通常来说,开N次方是一个非常复杂的运算。除了查表法,如果采用硬性计算的话,有一个公式:
(X*X+A)/(2*X)=X
A代表被开方数,X代表开方数,可以看出上式是一个恒等式,所以只需要随意带入一个X值就可以计算出更准确的X值了。
例如:将7开平方:
(1*1+7)/(2*1)=4
(4*4+7)/(2*4)=2.875
(2.875*2.875+7)/(2*2.875)=2.654189……
(2.65*2.65+7)/(2*2.65)=2.645754……
以此类推,7的开方数为:2.64575131106……
此方法也同样适用于更高次的开方,比如开立方。相应的只要把算式改成(X^3+A)/(2*X^2)=X就行了。
例如:将7开立方:
(1^3+7)/(2*1^2)=4
(4^3+7)/(2*4^2)=2.21875
(2.21875^3+7)/(2*2.21875^2)=1.822216……
(1.822^3+7)/(2*1.822^2)=1.96543……
以此类推,7开立方的准确值为:1.9129311827723891011991168395475……
如果这样计算来看,开14次方的运算量会多么的巨大啊,真的只有电脑和天才能短时间计算出来了。
但是,有没有更好点的算法呢,运算量不那么大的?有,看这个笔算的方式:
笔算开n次方的方法 (抄自互联网)
旧的初中教材里有笔算开平方的方法,我觉得笔算开n次方的方法也不难,就介绍我知道的笔算开n次方的方法:
1、把被开方的整数部分从个位起向左每隔n位为一段,把开方的小数部分从小数点第一位起向由每隔n位为一段,用撇号分开;
2、根据左边第一段里的数,求得开n次算术根的最高位上的数,假设这个数为a;
3、从第一段的数减去求得的最高位上数的n次方,在它们的差的右边写上第二段数作为第一个余数;
4、把n(10a)^(n-1)去除第一个余数,所得的整数部分试商(如果这个最大整数大于或等于10,就用9做试商);
5、设试商为b。如果(10a+b)^n-(10a)^n小于或等于余数,这个试商就是n次算术根的第二位;如果(10a+b)^n-(10a)^n大于余数,就把试商逐次减1再试,直到(10a+b)^n-(10a)^n小于或等于余数为止。
6、用同样的方法,继续求n次算术跟的其它各位上的数(如果已经算了k位数数字,则a要取为全部k位数字)。
例如计算987654321987654321的五次算术根,就算到小数点后四位。
3 9 7 1. 1 9 2 9
5√987'65432'19876'54321.00000'00000'00000'00000
243
________________________________________________
744 65432......................................74465432/(5×30^4)整数部分是18,用9作试商
659 24199......................................39^5-30^5
_____________________________________________
85 41233 19876................................854123319876/(5×390^4)的整数部分是7,用7作试商
83 92970 61757................................397^5-390^5
____________________________________________
1 48262 58119 54321..........................1482625811954321/(5×3970^4)的整数部分是1,用1作试商
1 24265 57094 08851..........................3971^5-3970^5
___________________________________________
23997 01025 45470 00000....................23997010254547000000/(5×39710^4)的整数部分是1,用1作试商
12433 44352 06091 99551....................39711^5-39710^5
_________________________________________
11563 56673 39378 00449 00000..............1156356673393780044900000/(5×397110^4)的整数部分是9,用9作试商
11191 17001 57043 20516 21599..............397119^5-397110^5
_________________________________________
372 39671 82334 79932 78401 00000........3723967182334799327840100000/(5×3971190^4)的整数部分是2,用2作试商
248 70419 01386 56554 83574 43232........3971192^5-3971190^5
_______________________________________
123 69252 80948 23377 94826 56768 00000..123692528094823377948265676800000/(5×39711920^4)的整数部分是9,用9作试商
111 91704 90192 14028 71518 74119 30649..39711929^5-39711920^5
_______________________________________
11 77547 90756 09349 23307 82648 69351
这样就得到987654321987654321的五次算术根精确到小数点前四位为3971.1929。
说起来,第二个算法比第一个要简单很多,只有有1-2位整数(没有多位小数)的乘N次方运算,而且可以用较低的运算量,优先算出结果的第一、二、......位数字。如果计算结果增加到5、6位的数字以上,计算量就会飞速的上升,这时候反正俺的脑袋做这个心算铁定没戏。
那么还有没有更快的算法呢?
俺一直觉得人与人的智力差别应该没那么大,经过专门的练习按照一定的规则可以提高解决问题的速度,但是基本的加减乘除的运算,不太可能十倍、百倍的增加。如果真有人脑本来就可以提速百倍,那么在千万年的进化过程中,早就该显露出来了。这么多么多么巨大的进化优势啊。
一个研究计算机算法的,通常会对二进制的数字很了解。例如数字65536,程序员会直接想到2^16,4294967296会直接想到2^32次方,根本用不着一次次算。我们普通人脑子是算不了电脑那么快,但是某些情形下可以取巧的,可以靠记忆力啊,就像经常用就记下来的2的1-32次方的各个数字。
比如1-100之间所有数字的1-20次方,最大值已经达到40位数字,比节目中的16位大多了xx亿亿倍。这样也共有2000个数字,有心人还是可以硬记下来的。
好了,现在请专家随便出题吧,只要是结果不大于100,20次方以下的任意数字开方,张口就来(通过与记忆中的数字比较,反向查找,甚至熟了还可以多估算一位数字,这样就是3位数字了)。这就是俺“发明”的死记硬背查表法。哈哈,想来我们这些普通人,也可以在“专家”面前大大的炫耀一番了。
我们离天才或许并不遥远。
少年周玮的计算结果也是两位数字,可惜无法了解他是如何计算的,但如果在节目中他能将结果推算到5、6位以上的数字,那就确确实实的无与伦比的计算天才。再次想说,俺对周玮毫无意见,雨人生活很艰难应该得到更多的关爱。只是讨厌“专家”、“科学家”的夸张、做作。