redstone_machine...吧 关注:3,610贴子:60,851

【水】最大公约数、最小公倍数、约分通分一体机

只看楼主收藏回复


计算器镇楼


IP属地:浙江1楼2017-08-26 09:52回复
    二楼存档用


    IP属地:浙江2楼2017-08-26 09:52
    收起回复
      2026-01-09 00:29:39
      广告
      不感兴趣
      开通SVIP免广告
      虽然知道这是械电为主的吧,但按这技术当个水帖发应该还是可以的吧


      IP属地:浙江3楼2017-08-26 09:54
      回复
        先说各部分的功能吧(其实存档的各个区域也有标注)

        图中黄色为×10,紫色为强转弱,棕色为弱转强,橙色为乘法器,绿色为除法器,蓝色为控制,红色为溢出显示(就是值过大了)


        IP属地:浙江4楼2017-08-26 09:54
        回复
          然后我们将使用时的注意事项
          1、这有两个控制的,更改输入时先按输入,输入值后再按开始运算,以减少卡顿

          2、当红色部分的灯亮起时就代表值过大了,该值将不会输出

          3、在刚进入存档时面前的箱子里有强度1~ 9的cb,放在输入区的比较器前用于输入(不用容器是因为换强度时打掉东西会掉一地


          IP属地:浙江5楼2017-08-26 09:55
          回复
            相关信息
            1、输入

            输入一共分为4个区域,图中从前到后分别为分子1、数2(或分母2)、数1(或分母1)、分子2,输入的值在0~2147483646(上限少一是因为输出时的值要加一),超过上限旁边的警示灯会亮,并且不会输出。
            2、最大公约数
            速度:1~23.5分钟
            时钟周期:30.8秒(我尽力了
            顺便说一句千万不要试算1836311903和1134903170的最大公约数

            求的方法是辗转反除,就是求a与b的最大公约数,首先判定a与b的大小,若a>b,则a/b;若b>a,则b/a。得到余数c,此时将a于b中较小的值作为a,c作为b,继续重复上面的步骤,直到c=0时,这时这次运算中的除数就是a与b的最大公约数。
            然而在运算中运用比较在看谁除以谁速度就慢了,于是我改成直接输入a、b分别做为被除数和除数,如果a>b,那输出的便为余数;如果b>a那会因为除不了,那余数便是a。除完后,将除数的值转到被除数,余数转到除数,因为除法中余数一定是小于除数的,所以就能一直算到余数为零,上面一开始b>a的情况也就会变为b/a进行计算(好绕啊


            IP属地:浙江6楼2017-08-26 09:55
            收起回复
              3、约分

              在两个乘法器下面的就是两个除法器,作用是将输入的两个数约分,就是将两个数都除以最大公约数

              这两大排的灯就是约分后的结果显示
              4、最小公倍数

              最大公倍数算法就是a×b/c(这里a、b为输入的两个数,c为最大公约数),了解模电的都知道模电的乘法器的两个乘数一个要弱模,一个要强模输入,这里为了方便就一开始导入数1(强模),将数2除以最大公约数后再与之相乘(弱模),正好除法后的结果也是弱模输出,而且这样速度最快,计算完由强转弱输出结果(会溢出显示)


              IP属地:浙江7楼2017-08-26 09:55
              回复
                5、通分
                这里要讲一下这里的通分计算并不会将分子和分母先约分一遍(别的通分的计算器好像也没有),因为这会很大,所以只是普通的通分

                约分上的两个乘法器就是通分的。这里要注意图上部的是分子2的,而图下部的是分子1的

                而这张图中的上部却是分母1,下部是分母2。为什么不弄在同一个位置,比如上部的是分母1、分子1;下部的是分母2、分子2?主要是因为交叉的做法(就是上面分母1、分子2:;下面分母2、分子1)比较方便建造。因为比如通分,举个例子通分c/ak和d/bk通分(这里k为分母的最大公约数)就会变为cb/abk和da/abk,可以看到通分后的分母就是两个分母的最小公倍数(所以分母直接用最小公倍数代替了),而两个分子就交叉乘了分母约分后的数,即c×b,d×a,这就是为什么要交叉建造的原因。而这里通分也沿用了最小公倍数的方法,将两个分子作为强模的乘数输入,而分母约分后的值作为弱模的乘数输入,一是为了方便,而是速度快


                IP属地:浙江8楼2017-08-26 09:56
                回复
                  2026-01-09 00:23:39
                  广告
                  不感兴趣
                  开通SVIP免广告


                  IP属地:上海来自Android客户端11楼2017-08-26 10:29
                  收起回复
                    看不懂,还是顶楼主


                    IP属地:江西来自Android客户端12楼2017-08-26 11:48
                    收起回复
                      大角虫


                      来自Android客户端13楼2017-08-26 13:36
                      回复
                        int GCD(int a,int b)
                        {
                        if(a%b==0)
                        {
                        return b;
                        }
                        else
                        {
                        return GCD(b,a%b);
                        }
                        }
                        楼主是想表达这个意思吧


                        IP属地:中国香港14楼2017-08-26 14:14
                        收起回复


                          IP属地:广东来自Android客户端15楼2017-08-26 14:22
                          回复