[从头学数学] 第33节 有余数的除法
来源:互联网 发布:新悦网络开发有限公司 编辑:程序博客网 时间:2024/05/09 18:17
剧情提要:
[机器小伟]在[工程师阿伟]的陪同下进入练气期第四层功法的修炼,
这次要修炼的目标是[有余数的除法]。
想到把数字拆成一部分、一部分、一部分的那种痛苦,阿伟不禁叹了口气,不过好在,终于成功了。
>>>
7 ÷ 2 = 3 •••••• 1
[机器小伟]在[工程师阿伟]的陪同下进入练气期第四层功法的修炼,
这次要修炼的目标是[有余数的除法]。
正剧开始:
星历2016年01月06日 13:05:43, 银河系厄尔斯星球中华帝国江南行省。
[工程师阿伟]正在和[机器小伟]一起研究有余数的除法。
本次功法中出现了除法竖式:
[工程师阿伟]费了九牛二虎之力,终于给[机器小伟]制造出了除法竖式绘制神器:
<span style="font-size:18px;">/*** @usage 除法竖式* @author mw* @date 2016年01月06日 星期三 11:05:09 * @param* @return**/function verticalDiv(dividend, divisor) {/*被除数 dividend除数 divisor商数 quotient余数 remainder*/var r = 20;var lenOfDividend =dividend.toFixed(0).length;var lenOfDivisor = divisor.toFixed(0).length;var quotient = Math.floor(dividend/divisor);var lenOfQuotient = quotient.toFixed(0).length;var remainder = dividend - quotient * divisor;a = [divisor, dividend, quotient, remainder];//除数位置var x0 = 20 + lenOfDivisor * r, y0= 0;//被除数位置var x1 = x0 + r + lenOfDividend * r, y1 = y0;//商位置var x2 = x1, y2 = y1 - 2 * r;plot.beginPath().bezierCurveTo(x0-r, y0+r, x0-0.5*r, y0+0.5*r, x0-0.2*r, y0-0.5*r, x0, y0-r)/*.moveTo(x0-r, y0+r).lineTo(x0, y0-1*r)*/.closePath().stroke();plot.beginPath().moveTo(x0, y0-1*r).lineTo(x2+r, y0-1*r).closePath().stroke();rightAlign(a[0], x0, y0, r);rightAlign(a[1], x1, y1, r);rightAlign(a[2], x2, y2, r);var tmp1, tmp2, tmp3, x, y;//x, y的初始位置x = x1 - (lenOfQuotient-1) *r, y = y1 + 1.5 * r;if (lenOfQuotient > 1) {for (var i = 0; i < lenOfQuotient; i++) {if (i == 0) {//待减tmp1 = (quotient.toFixed(0)[i] - '0')*divisor;//被减tmp2 = Math.floor(dividend / Math.pow(10, lenOfQuotient-i-2));//减得的差进入下一轮tmp3 = tmp2 - tmp1 * 10;rightAlign(tmp1, x, y, r);plot.beginPath().moveTo(x0, y+r).lineTo(x1 +r, y+r).closePath().stroke();rightAlign(tmp3,x+r, y+2*r, r);//位置递增x += r;y += 3.5*r;} else if (i < lenOfQuotient-1 ) {//中间轮数tmp1 = (quotient.toFixed(0)[i] - '0')*divisor;tmp3 = tmp3*10 + (dividend.toFixed(0)[i+lenOfDividend-lenOfQuotient+1]-'0')-tmp1*10;rightAlign(tmp1, x, y, r);plot.beginPath().moveTo(x0, y+r).lineTo(x1 +r, y+r).closePath().stroke();rightAlign(tmp3,x+r, y+2*r, r);x += r;y += 3.5*r;}else {//最后一轮tmp1 = (quotient.toFixed(0)[i] - '0')*divisor;rightAlign(tmp1, x, y, r);plot.beginPath().moveTo(x0, y+r).lineTo(x1 +r, y+r).closePath().stroke();plot.beginPath().moveTo(x0, y+r).lineTo(x1 +r, y+r).closePath().stroke();rightAlign(a[3],x, y+2*r, r);}}}else {//最后一轮tmp1 = quotient*divisor;rightAlign(tmp1, x, y, r);plot.moveTo(x0, y+r).lineTo(x1 +r, y+r).stroke();plot.beginPath().moveTo(x0, y+r).lineTo(x1 +r, y+r).closePath().stroke();rightAlign(a[3],x, y+2*r, r);}}</span>
想到把数字拆成一部分、一部分、一部分的那种痛苦,阿伟不禁叹了口气,不过好在,终于成功了。
小伟拿到了这个神器,解决除法竖式问题不费吹灰之力:
<span style="font-size:18px;">function myDraw() {plot.init();setPreference();var row = 1, col=3;for (var i=0; i < col; i++) {setSector(row, col, 1, i+0.5);verticalDiv(11, i+3);}}</span>
下面就是相对容易的算式了:
<span style="font-size:18px;">#### @usage 带余数的除法# @author mw# @date 2016年01月06日 星期三 10:55:08 # @param# @return####def divWithRemainder(a, b): result = divmod(a, b); print('{0} ÷ {1} = {2} ?????? {3}'.format(a, b, result[0], result[1])); return;</span>
>>>
7 ÷ 2 = 3 •••••• 1
>>>
44 ÷ 8 = 5 •••••• 4
44 ÷ 9 = 4 •••••• 8
<span style="font-size:18px;">function myDraw() {plot.init();setPreference();var a = [43, 7,26,4,59,7];var len = Math.floor(a.length/2);var row = 1, col=4;for (var i = 0; i < len; i++) {setSector(row, col, 1, i+1);verticalDiv(a[2*i], a[2*i+1]);}}</span>
小伟决定试一下神器的威力:
算得对不对呢?
>>>
123456 ÷ 789 = 156 •••••• 372
>>>
1234567890 ÷ 789 = 1564724 •••••• 654
>>>
1234567890 ÷ 78901234 = 15 •••••• 51049380
经过这些测试,小伟终于完全证实了神器的强大威力。
本节到此结束,欲知后事如何,请看下回分解。
0 0
- [从头学数学] 第33节 有余数的除法
- [从头学数学] 第76节 小数除法
- [从头学数学] 第92节 分数除法
- [从头学数学] 第49节 除数是一位数的除法
- [从头学数学] 第61节 除数是两位数的除法
- [从头学数学] 第194节 数系的扩充与复数的引入
- [从头学数学] 第29节 表内除法(一)
- [从头学数学] 第31节 表内除法(二)
- [从头学数学] 第07节 11~20各数的认识
- [从头学数学] 第14节 100以内数的认识
- [从头学数学] 第34节 万以内数的认识
- [从头学数学] 第21节 角的初步认识
- [从头学数学] 第42节 倍的认识
- [从头学数学] 第45节 分数的初步认识
- [从头学数学] 第54节 小数的初步认识
- [从头学数学] 第56节 大数的认识
- [从头学数学] 第58节 角的度量
- [从头学数学] 第79节 多边形的面积
- Android MVP架构的使用
- 遍历Map的四种方法
- Android框架One
- Selenium+Python+Chrome 浏览器操作
- js中undefined,null和typeof运算符
- [从头学数学] 第33节 有余数的除法
- gitlab使用说明
- AsyncHttpClient 基本用法
- android 页面容器 下一页很上一页view
- iOS开发之imageView居中显示图片
- qt控件窗口大小
- 【成功学积累】:关于大学以及工作中如何创造优势
- 在C#中利用Keep-Alive处理Socket网络异常断开的方法
- 深入理解BootStrap -- 标签(label)与徽章(badge)12