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.

127 lines
2.5 KiB

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<long>();
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<long> primes) {
foreach (long i in primes) {
if (num % i == 0) {
return false;
}
}
return true;
}
static List<long> PrimesUpThrough(long num) {
var primes = new List<long>();
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<long> 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());
}
}
}