【发布时间】:2011-03-14 08:23:54
【问题描述】:
我是 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);
}
}
}
有没有更快的算法? 提前致谢。
【问题讨论】:
-
其实不太一样。该问题询问最快的是什么,这个问题询问什么速度足以被 SPOJ 接受。
-
大是相对的。出于某种原因,我会将每个适合
Int32的素数称为小。