我是一名C#初学者,正在尝试编写一个应用程序以获取用户输入的两个数字之间的质数。问题是:在较大的数字范围(有效数字在1到1000000000之间)内获取质数需要很长时间,而根据我正在解决的问题,整个操作必须在短时间内完成。以下是更多解释的问题链接: SPOJ-Prime
这是我代码中负责获取质数的部分:
public void GetPrime()
{
int L1 = int.Parse(Limits[0]);
int L2 = int.Parse(Limits[1]);
if (L1 == 1)
{
L1++;
}
for (int i = L1; i <= L2; i++)
{
for (int k = L1; k <= L2; k++)
{
if (i == k)
{
continue;
}
else if (i % k == 0)
{
flag = false;
break;
}
else
{
flag = true;
}
}
if (flag)
{
Console.WriteLine(i);
}
}
}
有更快的算法吗? 提前感谢。
Int32
的每个质数为小。 - Dykam