Exemple #1
0
        public static long Solution()
        {
            long solution  = 0;
            var  stopwatch = new Stopwatch();

            stopwatch.Start();
            var previousTime = 0.0;
            var currentTime  = 0.0;

            var count     = 0;
            var solutions = new List <long>();

            for (int i = 7; count < limit; i++)
            {
                var order = UtilityFunctions.MultiplicativeOrder(10, 9 * i);
                if (order > 0 && (i - 1) % order == 0 && !UtilityFunctions.IsPrime(i))
                {
                    count    += 1;
                    solution += i;
                    solutions.Add(i);
                    Console.Write($"{ i}, ");
                }
            }
            currentTime = stopwatch.ElapsedMilliseconds;
            Console.WriteLine($"Solution took {currentTime - previousTime} seconds.");
            Console.WriteLine(solutions.ToArray());
            return(solution);
        }
Exemple #2
0
        public static long Solution()
        {
            var stopwatch = new Stopwatch();

            stopwatch.Start();

            for (int i = upperLimit + 1; true; i += 2)
            {
                var order = UtilityFunctions.MultiplicativeOrder(10, 9 * i);

                if (order > upperLimit)
                {
                    Console.WriteLine($"Solution took {stopwatch.ElapsedMilliseconds} milliseconds.");
                    return(i);
                }
            }
        }
Exemple #3
0
        public static long Solution()
        {
            long solution = 0;

            var primes = UtilityFunctions.Primes(limit);

            foreach (var p in primes)
            {
                var ord = UtilityFunctions.MultiplicativeOrder(10, 9 * p);
                if (ord == 0)
                {
                    solution += p;
                    continue;
                }
                while (ord % 2 == 0 || ord % 5 == 0)
                {
                    if (ord % 2 == 0)
                    {
                        ord /= 2;
                    }
                    if (ord % 5 == 0)
                    {
                        ord /= 5;
                    }
                }
                if (ord > 1)
                {
                    solution += p;
                }
                else
                {
                    Console.WriteLine(p);
                }
            }

            return(solution);
        }
        public static long Solution()
        {
            long solution  = 0;
            var  counter   = 0;
            var  stopwatch = new Stopwatch();

            stopwatch.Start();
            var previousTime = 0.0;
            var currentTime  = 0.0;

            var primes = UtilityFunctions.Primes(1000000);

            currentTime = stopwatch.ElapsedMilliseconds;
            Console.WriteLine($"Settig up took {currentTime - previousTime} milliseconds.");
            previousTime = currentTime;

            foreach (var p in primes)
            {
                var order = UtilityFunctions.MultiplicativeOrder(10, 9 * p);
                if (order == 0)
                {
                    continue;
                }
                if (limit % order == 0)
                {
                    solution += p;
                    counter  += 1;
                    Console.WriteLine(p);
                    if (counter >= 40)
                    {
                        return(solution);
                    }
                }
            }
            return(solution);
        }