using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
namespace PrimeNumbers
{
internal static class Extensions
{
internal static bool IsPrime(this int number)
{
if ((number % 2) == 0)
{
return number == 2;
}
var sqrt = (int)Math.Sqrt(number);
for (var t = 3; t <= sqrt; t = t + 2)
{
if (number % t == 0)
{
return false;
}
}
return number != 1;
}
internal static string BuildCoordinates(this double number)
{
var strNumber = number.ToString(CultureInfo.InvariantCulture);
return string.Format("N 50° {0}{1}.{2}{3}{4} E 014° {5}{6}.{7}{8}{9}",
strNumber[6], strNumber[2], strNumber[0],
int.Parse(strNumber[5].ToString(CultureInfo.InvariantCulture)) + 1, strNumber[9],
strNumber[8], strNumber[10],
int.Parse(strNumber[4].ToString(CultureInfo.InvariantCulture)) + 2, strNumber[3],
int.Parse(strNumber[3].ToString(CultureInfo.InvariantCulture)) - 4);
}
}
class Program
{
static void Main()
{
const int initialCount = 3000000;
var list = new List<int>(initialCount);
var primeNumbers = new HashSet<int>();
for (var i = 0; i <= initialCount; i++)
{
list.Add(i);
}
foreach (var i in list.Where(i => i.IsPrime()))
{
primeNumbers.Add(i);
}
var number
= primeNumbers.Aggregate<int, int>(1, (current, count) => count + current);
Console.WriteLine(number.BuildCoordinates());
}
}
}