网站首页
手机版

用vbnet来计算《九章算术》的“盈不足篇”(分数类)

更新时间:作者:小小条

《九章算术》的“盈不足篇”里有一个很有意思的老鼠打洞问题。原文这么说的:

用vbnet来计算《九章算术》的“盈不足篇”(分数类)

今有垣厚十尺,两鼠对穿。大鼠日一尺,小鼠亦一尺。大鼠日自倍,小鼠日自半。问:何日相逢?各穿几何?

这道题的意思就是说:

有一堵十尺厚的墙,两只老鼠从两边向中间打洞。大老鼠第一天打一尺,小老鼠也是一尺。大老鼠每天的打洞进度是前一天的一倍,小老鼠每天的进度是前一天的一半。问它们几天可以相逢,相逢时各打了多少。其实这就是经典的相遇问题,只不过比一般的相遇问题稍微复杂点,因为两个物体的速度一直在变化。这道题的答案大家可以算算。

为了计算这题,专门用vbnet设计了一个分数类,专门用来计算分数。

Public Class Form1 '今有垣厚十尺,两鼠对穿。大鼠日一尺,小鼠亦一尺。大鼠日自倍,小鼠日自半。问:何日相逢?各穿几何? Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim 大鼠 As New 分数(2, 3) 大鼠.相加(5, 6) Me.Text = CStr(大鼠.分子) + " " + CStr(大鼠.分母) End SubEnd ClassPublic Class 分数 Public 分子 As Integer Public 分母 As Integer Sub New(a分子 As Integer, a分母 As Integer) 分子 = a分子 分母 = a分母 End Sub Sub 自倍() 分子 = 分子 * 2 End Sub Sub 自半() 分母 = 分母 * 2 End Sub Sub 相加(b分子 As Integer, b分母 As Integer) 分子 = 分子 * b分母 + 分母 * b分子 分母 = 分母 * b分母 End Sub Function 值() As Double Return 分子 / 分母 End FunctionEnd Class

在botton中测试了2/3与5/6相加的结果,答案是27/18

Public Class Form1 '今有垣厚十尺,两鼠对穿。大鼠日一尺,小鼠亦一尺。大鼠日自倍,小鼠日自半。问:何日相逢?各穿几何? Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim 大鼠 As New 分数(1, 1) Dim 小鼠 As New 分数(1, 1) Dim 两鼠和 As New 分数(2, 1) '第一天已经有2尺了 Dim s As String = "" For i = 2 To 5 大鼠.自倍() 小鼠.自半() 两鼠和.相加(大鼠.分子, 大鼠.分母) 两鼠和.相加(小鼠.分子, 小鼠.分母) s = s + "第" + CStr(i) + "天:" + vbCrLf s = s + "大鼠=" + 大鼠.输出 + " " + "小鼠=" + 小鼠.输出 + " ==> " + "两鼠和=" + 两鼠和.输出 + " 值=" + CStr(两鼠和.值) + vbCrLf Next TextBox1.Text = s End SubEnd ClassPublic Class 分数 Public 分子 As Int64 Public 分母 As Int64 Sub New(a分子 As Integer, a分母 As Integer) 分子 = a分子 分母 = a分母 End Sub Sub 自倍() 分子 = 分子 * 2 End Sub Sub 自半() 分母 = 分母 * 2 End Sub Sub 相加(b分子 As Integer, b分母 As Integer) 分子 = 分子 * b分母 + 分母 * b分子 分母 = 分母 * b分母 End Sub Function 值() As Double Return 分子 / 分母 End Function Function 输出() As String Return CStr(分子) + "/" + CStr(分母) End FunctionEnd Class

结果:

第2天:大鼠=2/1 小鼠=1/2 ==> 两鼠和=9/2 值=4.5第3天:大鼠=4/1 小鼠=1/4 ==> 两鼠和=70/8 值=8.75第4天:大鼠=8/1 小鼠=1/8 ==> 两鼠和=1080/64 值=16.875第5天:大鼠=16/1 小鼠=1/16 ==> 两鼠和=33728/1024 值=32.9375

梳理一下思路:

第一天:大鼠=1,小鼠=1,挖完2尺

第2天:

大鼠=2/1 小鼠=1/2 ==> 两鼠和=9/2 值=4.5 挖完4.5尺

第3天:

大鼠=4/1 小鼠=1/4 ==> 两鼠和=70/8 值=8.75 挖完8.75尺

这一天大鼠共挖了1+2+4=7,小鼠共挖了1+1/2+1/4=1+6/8=1.75

第4天:

大鼠=8/1 小鼠=1/8 ==> 两鼠和=1080/64 值=16.875 挖完16.875 尺

也就是说到第4天就可以挖完。最后一天各挖了一部分。

大家说是不是这样算呢?

版权声明:本文转载于今日头条,版权归作者所有,如果侵权,请联系本站编辑删除

为您推荐

629.2025年中考物理山东省烟台市卷:力学综合题

践行者初中物理力学典题详解第629题解析:(1)由题意可知:①VB=50cm³=50×10⁻⁶m³,②ρB=7.8×10³kg/m³,则:mB=ρBVB=7.8×10³kg/m³×50×10⁻⁶m³=0.39kg,GB=mBg=0.39kg

2026-01-08 15:31

成都市教育局最新发布!今年寒暑假时间→

寒假即将来临根据成都2025-2026学年中小学(幼儿园)校历今年寒暑假时间如下 幼儿园 2025-2026学年第一学期:2026年1月31日起放寒假 2025-2026学年第二学期:2026年3月2日开学,7月

2026-01-08 15:31

20252026学年度青岛中小学校历来了!新学期这样安排

随着2025-2026学年度第一学期进入尾声,青岛广大学子和家长关心的下学期校历正式发布。新学期开学、放假等重要时间节点已确定,一起来看看具体安排。一、2025-2026学年度第二学

2026-01-08 15:30

马鞍山中小学期末考试、开学时间,确定!

近日马鞍山市教育局发布关于2025—2026学年度第一学期期末考试及学期结束工作的通知 考试安排(一)小学、初中考试时间:1月27日—2月3日,具体考试时间由各校确定。(二)高中1. 高一

2026-01-08 15:30

一路摘抄,一路成长——高中生必备名句格言汇总及摘评3

摘抄:我爱我师,我更爱真理——亚里士多德简评:敢于质疑的精神推动着历史车轮滚滚向前。质疑声中,伽利略走上比萨斜塔,证实权威的谬误;质疑声中,哥白尼题字《天体论》,宣告愚昧时代的

2026-01-08 15:29

一路摘抄,一路成长——高中生必备名句格言汇总及摘评2

摘抄:不要到处诉说世界有负与你。世界不欠你什么,因为它先你而存在——马克.吐温简评:顺水而行,看山是山,看水是水;溯游而上,山亦非山,水亦非水。遭遇挫折时,你选择的是一味自怨自艾,

2026-01-08 15:29