C# solutions to Project Euler problems.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

126 lines
2.5 KiB

3 years ago
3 years ago
3 years ago
  1. using System;
  2. using System.Collections.Generic;
  3. using static System.Console;
  4. namespace Euler {
  5. class Program {
  6. static long Problem1() {
  7. long sum = 0;
  8. for (long i = 1; i < 1000; i++) {
  9. if (i % 3 == 0 || i % 5 == 0) {
  10. sum += i;
  11. }
  12. }
  13. return sum;
  14. }
  15. static long Problem2() {
  16. long max = 4_000_000;
  17. var fibs = new List<long>();
  18. fibs.Add(1);
  19. fibs.Add(2);
  20. while (fibs[fibs.Count - 1] < max) {
  21. long num = fibs[fibs.Count - 1] + fibs[fibs.Count - 2];
  22. fibs.Add(num);
  23. }
  24. long sum = 0;
  25. foreach (int i in fibs) {
  26. if (i % 2 == 0 && i <= max) {
  27. sum += i;
  28. }
  29. }
  30. return sum;
  31. }
  32. static bool IsPrime(long num, List<long> primes) {
  33. foreach (long i in primes) {
  34. if (num % i == 0) {
  35. return false;
  36. }
  37. }
  38. return true;
  39. }
  40. static List<long> PrimesUpThrough(long num) {
  41. var primes = new List<long>();
  42. primes.Add(2);
  43. for (int i = 3; i <= num; i += 2) {
  44. if (IsPrime(i, primes)) {
  45. primes.Add(i);
  46. }
  47. }
  48. return primes;
  49. }
  50. static long Problem3() {
  51. long target = 600_851_475_143;
  52. long targetSqrt = (long) Math.Sqrt(target);
  53. List<long> primes = PrimesUpThrough(targetSqrt);
  54. long highestPrimeFactor = 0;
  55. foreach (long i in primes) {
  56. if (target % i == 0) {
  57. highestPrimeFactor = i;
  58. }
  59. }
  60. return highestPrimeFactor;
  61. }
  62. static bool IsPalindromicNumber(long l) {
  63. string s = "" + l;
  64. for (int i = 0; i < s.Length / 2; i++) {
  65. if (s[i] != s[s.Length - i - 1]) {
  66. return false;
  67. }
  68. }
  69. return true;
  70. }
  71. static long Problem4() {
  72. long largest = 0;
  73. for (long i = 999; i >= 100; i--) {
  74. for (long j = 999; j >= 100; j--) {
  75. long target = i * j;
  76. if (target < largest) {
  77. continue;
  78. }
  79. if (IsPalindromicNumber(target)) {
  80. largest = target;
  81. }
  82. }
  83. }
  84. return largest;
  85. }
  86. static long Problem5() {
  87. for (long test = 20; ; test += 20) {
  88. for (int i = 2; i <= 20; i++) {
  89. if (test % i != 0) {
  90. break;
  91. }
  92. if (i == 20) {
  93. return test;
  94. }
  95. }
  96. }
  97. }
  98. static long Problem6() {
  99. long sum = 0;
  100. long sumSq = 0;
  101. for (long i = 1; i <= 100; i++) {
  102. sum += i;
  103. sumSq += i * i;
  104. }
  105. return sum * sum - sumSq;
  106. }
  107. static void Main(string[] args) {
  108. WriteLine(Problem6());
  109. }
  110. }
  111. }