humtong

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    /*
     求三个数的最小公倍数的方法
     *
     * 通常会使用下面的hcf函数做 但效率低
     *
     * greatestCommonDivisor是另一种方法
     * 例如
     * 210 % 27  = 21
     * 27 % 21 =6
     * 21 % 6 = 3
     * 6%3=0;
     * 当余数为0的前一步就是他们的最小公倍数
     */
    class Program
    {
      //通常方法
      static int HCF(int pNum1, int pNum2, int pNum3)
      {

          int minNum = pNum1 < pNum2 ? pNum1 : pNum2;
          minNum = minNum < pNum3 ? minNum : pNum3;

          if (pNum1 % minNum == 0 && pNum2 % minNum == 0 && pNum3 % minNum == 0)
          {
              return minNum;
          }
          //除以最小一个
          for (int i = minNum / 2; i > 0; i--)
          {
              if (pNum1 % i == 0 && pNum2 % i == 0 && pNum3 % i == 0)
                  return i;
          }
          return -1;
      }

      int greatestCommonDivisor(int a, int b)
      {
          int result = 0;
          //swap
          if (a > b) { a ^= b; b ^= a; a ^= b; }
          //a 较小数 b较大数
          //除不尽一直递归
          while (b % a != 0)
          {
              result = greatestCommonDivisor(b % a, a);
              break;
          }
          if (b % a == 0 && a != 0)
              result = a;
          return result;
      }


        static void Main(string[] args)
        {
            Program p = new Program();
            int x, y, z, w, v;
            Console.Write("请输入你要求公因子的三个整数:\r\n");
            x = 12;
            y = 64;
            z = 32;
            w = p.greatestCommonDivisor(x, y);
            v = p.greatestCommonDivisor(w, z);
            Console.WriteLine(v);
            //Console.ReadLine();
        }
    }
}

分类:

技术点:

相关文章:

  • 2022-02-17
  • 2022-12-23
  • 2022-02-26
  • 2022-12-23
  • 2021-04-26
  • 2021-12-19
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-01-22
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案