【ProjectEuler】ProjectEuler_005

// 2520 is the smallest number that can be divided by each of the numbers from 1 to 10 without any remainder.
// 
// What is the smallest positive number that is evenly divisible by all of the numbers from 1 to 20?

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

namespace projecteuler005
{
    class Program
    {
        static void Main(string[] args)
        {
            F1();
        }

        private static void F1()
        {
            Console.WriteLine(new System.Diagnostics.StackTrace().GetFrame(0).GetMethod());
            DateTime timeStart = DateTime.Now;

            int maxValue = 20;
            long lcm = 1;

            for (int i = 2; i <= maxValue; i++)
            {
                lcm = LCM(lcm, i);
            }
            Console.WriteLine(lcm);

            Console.WriteLine("Total Milliseconds is " + DateTime.Now.Subtract(timeStart).TotalMilliseconds + "\n\n");
        }

        /// <summary>
        /// 求2个数的最大公约数
        /// </summary>
        /// <param name="a"></param>
        /// <param name="b"></param>
        private static long GCM(long a, long b)
        {
            if (a % b == 0)
            {
                return b;
            }
            return GCM(b, a % b);
        }

        /// <summary>
        /// 求2个数的最小公倍数
        /// </summary>
        /// <param name="a"></param>
        /// <param name="b"></param>
        /// <returns></returns>
        private static long LCM(long a, long b)
        {
            return a * b / GCM(a, b);
        }
    }
}


/*
Void F1()
232792560
Total Milliseconds is 7.0009

By GodMoon
*/

你可能感兴趣的:(String,Class,each,Numbers)