From e6a6bd34f6e4ff70d8a93f11703092859dc7a5bb Mon Sep 17 00:00:00 2001 From: Colin McMillen Date: Tue, 17 Nov 2020 14:25:33 -0500 Subject: [PATCH] solution for problem #3 --- Program.cs | 49 +++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 41 insertions(+), 8 deletions(-) diff --git a/Program.cs b/Program.cs index b6fc517..4ab91d3 100644 --- a/Program.cs +++ b/Program.cs @@ -5,9 +5,9 @@ namespace Euler { class Program { - static int Problem1() { - int sum = 0; - for (int i = 1; i < 1000; i++) { + static long Problem1() { + long sum = 0; + for (long i = 1; i < 1000; i++) { if (i % 3 == 0 || i % 5 == 0) { sum += i; } @@ -16,18 +16,18 @@ namespace Euler { } static long Problem2() { - int max = 4_000_000; + long max = 4_000_000; - var fibs = new List(); + var fibs = new List(); fibs.Add(1); fibs.Add(2); while (fibs[fibs.Count - 1] < max) { - int num = fibs[fibs.Count - 1] + fibs[fibs.Count - 2]; + long num = fibs[fibs.Count - 1] + fibs[fibs.Count - 2]; fibs.Add(num); } - int sum = 0; + long sum = 0; foreach (int i in fibs) { if (i % 2 == 0 && i <= max) { sum += i; @@ -37,8 +37,41 @@ namespace Euler { return sum; } + static bool IsPrime(long num, List primes) { + foreach (long i in primes) { + if (num % i == 0) { + return false; + } + } + return true; + } + + static List PrimesUpThrough(long num) { + var primes = new List(); + primes.Add(2); + for (int i = 3; i <= num; i += 2) { + if (IsPrime(i, primes)) { + primes.Add(i); + } + } + return primes; + } + + static long Problem3() { + long target = 600_851_475_143; + long targetSqrt = (long) Math.Sqrt(target); + List primes = PrimesUpThrough(targetSqrt); + long highestPrimeFactor = 0; + foreach (long i in primes) { + if (target % i == 0) { + highestPrimeFactor = i; + } + } + return highestPrimeFactor; + } + static void Main(string[] args) { - Console.WriteLine(Problem2()); + Console.WriteLine(Problem3()); } } } \ No newline at end of file