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); }
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); } } }
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); }