【发布时间】:2016-10-23 17:03:08
【问题描述】:
我看了一下来自project euler的以下问题:
通过列出前六个素数:2、3、5、7、11 和 13,我们可以看到第 6 个素数是 13。 第10001个质数是多少?
我尝试取数字的平方根,然后找到数字平方根下方的所有质数,然后将数字除以所有平方根,看看是否每次都剩下 0。如果该数不能被其平方根下的所有素数整除,则它是素数。我这样做是为了降低程序必须进行的迭代。这是我现在所拥有的,我不确定为什么它不起作用。有谁知道我做错了什么?
List<int> primeNumbers = new List<int>();
bool prime = true;
bool MainPrime = true;
int check = 1;
for (long i = 3; i < long.MaxValue; i++)
{
if ((i % 2) != 0)
{
int root = Convert.ToInt32(Math.Sqrt(i));
for (int j = 1; j < root; j++)
{
for (int k = 2; k < j; k++)
{
if ((j% k) == 0)
{
prime = false;
}
}
if (prime)
{
primeNumbers.Add(j);
}
prime = true;
}
}
foreach (var item in primeNumbers)
{
if ((i%item) == 0)
{
MainPrime = false;
}
}
primeNumbers.Clear();
if (MainPrime)
{
check++;
}
if (check == 10001)
{
Console.WriteLine(i);
break;
}
}
Console.ReadKey();
【问题讨论】: