可以这样写一个简单测试using System;
using System.Linq;namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            var arr = new int[] { 80, 120, 300, 128, 272 };
            var x = 最大公约数(arr);
            var result = string.Join(":", arr.Select(u => u / x).ToArray());
            Console.WriteLine(result);
            Console.ReadLine();
        }        private static int 最大公约数(int[] array)
        {
            Array.Sort<int>(array.ToArray());
            var x = 最大公约数(array[0], array[1]);
            for (var i = 2; i < array.Length; i++)
                x = 最大公约数(x, array[i]);
            return x;
        }        private static int 最大公约数(int a, int b)
        {
            var x = b % a;
            if (x == 0)
                return a;
            else
                return 最大公约数(x, a);
        }
    }

解决方案 »

  1.   

    有一句话 Sort 语句是多余的,删掉它,重写为using System;
    using System.Linq;namespace ConsoleApplication1
    {
        class Program
        {
            static void Main(string[] args)
            {
                var arr = new int[] { 80, 120, 300, 128, 272 };
                var x = 最大公约数(arr);
                var result = string.Join(":", arr.Select(u => u / x).ToArray());
                Console.WriteLine(result);
                Console.ReadKey();
            }        private static int 最大公约数(int[] array)
            {
                var x = 最大公约数(array[0], array[1]);
                for (var i = 2; i < array.Length; i++)
                    x = 最大公约数(x, array[i]);
                return x;
            }        private static int 最大公约数(int a, int b)
            {
                var x = b % a;
                if (x == 0)
                    return a;
                else
                    return 最大公约数(x, a);
            }
        }}