今天听到了一个传说中的微软面试题,计算头N个质数之和,并使时间最小。相比对所有的程序员来说,第一个条件都还算是合理正当的要求,但是第二个条件似乎就显得极富有挑战性了。思考之后决定开始一次“终级算法”的探究!!!
最初的思路是:建立一个N长度的Array,然后预置进去几个必须的质数:
public static int GetPrimersTotal(int Count, out int[] primers)
{
primers = new int[Count];
primers[0] = 2;
primers[1] = 3;
primers[2] = 5;
primers[3] = 7;
感觉自己挺无耻的,一下在放了那么多,呵呵,其实这个根本就无关键要,等一下测试的时候,都是百万级的数据。然后就要写一个算法来实现质数的查询,这个似乎对谁都不是什么很难的事,我就不浪费力气了详细说明了:
int total = 17;
int index = 3;
int next = 9;
bool isPrimer;
int current = Environment.TickCount;
while (index < Count -1)
{
isPrimer =