solution for problem #3
This commit is contained in:
parent
d1b166d91d
commit
e6a6bd34f6
49
Program.cs
49
Program.cs
@ -5,9 +5,9 @@ namespace Euler {
|
|||||||
|
|
||||||
class Program {
|
class Program {
|
||||||
|
|
||||||
static int Problem1() {
|
static long Problem1() {
|
||||||
int sum = 0;
|
long sum = 0;
|
||||||
for (int i = 1; i < 1000; i++) {
|
for (long i = 1; i < 1000; i++) {
|
||||||
if (i % 3 == 0 || i % 5 == 0) {
|
if (i % 3 == 0 || i % 5 == 0) {
|
||||||
sum += i;
|
sum += i;
|
||||||
}
|
}
|
||||||
@ -16,18 +16,18 @@ namespace Euler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static long Problem2() {
|
static long Problem2() {
|
||||||
int max = 4_000_000;
|
long max = 4_000_000;
|
||||||
|
|
||||||
var fibs = new List<int>();
|
var fibs = new List<long>();
|
||||||
fibs.Add(1);
|
fibs.Add(1);
|
||||||
fibs.Add(2);
|
fibs.Add(2);
|
||||||
|
|
||||||
while (fibs[fibs.Count - 1] < max) {
|
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);
|
fibs.Add(num);
|
||||||
}
|
}
|
||||||
|
|
||||||
int sum = 0;
|
long sum = 0;
|
||||||
foreach (int i in fibs) {
|
foreach (int i in fibs) {
|
||||||
if (i % 2 == 0 && i <= max) {
|
if (i % 2 == 0 && i <= max) {
|
||||||
sum += i;
|
sum += i;
|
||||||
@ -37,8 +37,41 @@ namespace Euler {
|
|||||||
return sum;
|
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 void Main(string[] args) {
|
static void Main(string[] args) {
|
||||||
Console.WriteLine(Problem2());
|
Console.WriteLine(Problem3());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user