コード例 #1
0
        public void GetMaxCommonDividerTest()
        {
            var message = "INPUT = {0} RESULT = {1}";

            foreach (var item in _MaxComDividers)
            {
                var input  = string.Join(", ", item.Key);
                var result = KataBase.GetMaxCommonDivider(item.Key[0], item.Key[1]);
                Assert.True(result == item.Value, string.Format(message, input, result));
            }
        }
コード例 #2
0
#pragma warning disable CA1814 // Используйте массивы массивов вместо многомерных массивов
        public static string SumFracts(int[,] args)
        {
            if (args is null)
            {
                throw new ArgumentNullException(nameof(args));
            }
            if (args.Length == 0)
            {
                return(null);
            }
            var zeroLength = args.GetLength(0);
            var tArray     = new int[zeroLength, 2];

            Array.Copy(args, tArray, args.Length);
            for (var i = 0; i < zeroLength; i++)
            {
                var mD = (int)KataBase.GetMaxCommonDivider(tArray[i, 0], tArray[i, 1]);
                tArray[i, 0] /= mD;
                tArray[i, 1] /= mD;
            }
            var nmr  = 0;
            var dnmr = 1;

            for (var i = 0; i < zeroLength; i++)
            {
                dnmr *= tArray[i, 1];
            }
            for (var i = 0; i < zeroLength; i++)
            {
                var multiplier = dnmr / tArray[i, 1];
                tArray[i, 0] *= multiplier;
                nmr          += tArray[i, 0];
            }
            if (nmr % dnmr == 0)
            {
                return($"{nmr / dnmr}");
            }
            var maxDvdr = KataBase.GetMaxCommonDivider(nmr, dnmr);

            return($"[{nmr / maxDvdr}, {dnmr / maxDvdr}]");

#pragma warning restore CA1814 // Используйте массивы массивов вместо многомерных массивов
        }
コード例 #3
0
        /// <summary>
        /// Возвращает пары число — сумма квадратов из чисел между введёнными,
        /// у которых сумма квадратов делителей сама является квадратом.
        /// </summary>
        /// <param name="m">Первое число диапазона.</param>
        /// <param name="n">Второе число диапазона.</param>
        /// <returns>Пары число — сумма квадратов. Сортировка по возрастанию.</returns>
        private static List <long[]> SquaredList(long m, long n)
        {
            var bigFirst = (m > n) ? true : false;
            var big      = bigFirst ? m : n;
            var small    = bigFirst ? n : m;
            var numbers  = new List <long[]>();

            for (var i = small; i <= big; i++)
            {
                List <long>        dividers   = KataBase.GetDividers(i);
                IEnumerable <long> divSquared = dividers.Select(d => d * d);
                var sumSquared = divSquared.Sum();
                var isSq       = KataBase.IsIntegerSquared(sumSquared);
                if (isSq)
                {
                    long[] c = { i, sumSquared };
                    numbers.Add(c);
                }
            }

            return(numbers);
        }
コード例 #4
0
        public void SimpeDividersTest()
        {
            var result = KataBase.SimpeDividers(24);

            Assert.True(false, "RESULT = " + result);
        }