UTF.COM.CN

多个数的最大公约数(C#)

作者:佚名 | 来源:网络 | 添加时间:2007-11-24 08:57:59 | 人气:645

多个数的最大公约数(C#)

     今天看见巨牛在求多个数的最大公约数,我回家在即,说了几句没说清楚就离开公司了。回到家一直憋着难受,写了这么小段代码。我用C#作的,主要是因为用C排序麻烦,我懒得搞。思路很简单,看代码和注释就行了。

代码:

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

namespace GongYueShu
{
      // 实现IComparer接口,为后面的ArrayList按照数字排序作准备
      class NumCompare : IComparer
      {
            public int Compare(object a, object b)
            {
                  return ( (int)a - (int)b );
            }
      }

      class Program
      {
            static void Main(string[] args)
            {
                  Console.WriteLine("Enter number, split by space: ");

                  // 读取数字并保存为数组
                  string[] tmp_strs = Console.ReadLine().Split( ' ' );

                  // 将数组转换为ArrayList,主要为了排序
                  ArrayList nums_list = new ArrayList();
                  foreach (string num in tmp_strs)
                  {
                        nums_list.Add( int.Parse(num) );
                  }

                  // 排序,得到数字中最小的一个
                  NumCompare MyCompare = new NumCompare();
                  nums_list.Sort( MyCompare );
                  int min_num = int.Parse( nums_list[0].ToString() );

                  // 最大公约数肯定大于等于1,且小于等于最小的那个数。
                  // 依次整除,如果余数全部为0说明是一个约数,知道得到最大的。
                  int gong_yue = 1;
                  for (int index = 1; index <= min_num; index++)
                  {
                        bool found = true;
                        foreach (object tmp_num in nums_list)
                        {
                              if ((int)tmp_num % index != 0)
                              {
                                    found = false;
                                    break;
                              }
                        }
                        if (found)
                        {
                              gong_yue = index;
                        }
                  }
            
                  Console.WriteLine( "最大公约数为: " + gong_yue );
            }
      }
}
责任编辑:冬天来了
【字号: 】【去论坛讨论】【发表评论】【打印本文】【告诉好友】【关闭窗口
网友评论(评论内容只代表网友观点,与本站立场无关!)

姓名:

验证码: 点击刷新