weekly_programmer

For Weekly Programming Challenges


Project maintained by AccaliaDeElementia Hosted on GitHub Pages — Theme by mattgraham

Solution for Week 2

Author: Magus

Language: C

static void Main(string[] args)
{
	var end = int.Parse(args.First());
	Console.WriteLine($"Sum of primes is {Sundaram2(end)}.");
}

private static BigInteger Sundaram2(int max)
{
	var end = max / 2;
	var set = Enumerable.Range(0, end);
	var primes =
		new[] { 2UL }
			.Concat(set.SelectMany(i =>
				Enumerable
					.Range(i, end)
					.Select(j => (ulong)i + (ulong)j + 2UL * (ulong)i * (ulong)j)))
			.Distinct();

	BigInteger sum = 0;
	for(int k = 0; k < max; k += 10000)
	{
		var segment = primes.Skip(k).Take(10000);
		sum += segment.Aggregate((a, b) => a + b);
	}
	return sum;
}