using System; using System.Collections.Generic; using static System.Console; namespace Euler { class Program { static long Problem1() { long sum = 0; for (long i = 1; i < 1000; i++) { if (i % 3 == 0 || i % 5 == 0) { sum += i; } } return sum; } static long Problem2() { long max = 4_000_000; var fibs = new List(); fibs.Add(1); fibs.Add(2); while (fibs[fibs.Count - 1] < max) { long num = fibs[fibs.Count - 1] + fibs[fibs.Count - 2]; fibs.Add(num); } long sum = 0; foreach (int i in fibs) { if (i % 2 == 0 && i <= max) { sum += i; } } 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 bool IsPalindromicNumber(long l) { string s = "" + l; for (int i = 0; i < s.Length / 2; i++) { if (s[i] != s[s.Length - i - 1]) { return false; } } return true; } static long Problem4() { long largest = 0; for (long i = 999; i >= 100; i--) { for (long j = 999; j >= 100; j--) { long target = i * j; if (target < largest) { continue; } if (IsPalindromicNumber(target)) { largest = target; } } } return largest; } static long Problem5() { for (long test = 20; ; test += 20) { for (int i = 2; i <= 20; i++) { if (test % i != 0) { break; } if (i == 20) { return test; } } } } static long Problem6() { long sum = 0; long sumSq = 0; for (long i = 1; i <= 100; i++) { sum += i; sumSq += i * i; } return sum * sum - sumSq; } static void Main(string[] args) { WriteLine(Problem6()); } } }