【发布时间】:2018-09-05 17:54:04
【问题描述】:
我有一个作业任务是在 C# 中输出 0-10000 的所有素数,但必须在我的解决方案中使用数组
我的代码是:
public static void Main()
{
Int32[] numbers = new int[10000];
for (int i = 3; 1 < 10000; i++)
{
numbers[i] = i;
}
for (int j = 0; j < 10000; j++)
{
if (numbers[j] != 0)
{
for (int k = 2; (k * j) < 10000; k++)
{
numbers[k * j] = 0;
}
}
}
for (int y = 0; l < 10000; l++)
{
if (numbers[l] != 0)
{
Console.WriteLine(numbers[l]);
}
}
Console.ReadLine();
}
我不断收到错误:
main.cs(17,5):警告 CS0162:检测到无法访问的代码 编译成功 - 1 个警告
未处理的异常:System.IndexOutOfRangeException:索引超出了数组的范围。 在 MainClass.Main () [0x00012] 在 :0 [错误] 致命的未处理异常:System.IndexOutOfRangeException:索引 超出了数组的范围。 在 MainClass.Main () [0x00012] in :0`
(第 17 行指的是for (int j = 0; j < 10000; j++))
【问题讨论】:
-
int y = 0; l < 10000; l++应该是int l = 0; l < 10000; l++ -
复制粘贴代码不校对的危害
-
还有
int i = 3; 1 < 10000; i++应该是int i = 3; i < 10000; i++ -
'for (int y = 0; l
-
for (int i = 3; 1 < 10000; i++)是一个无限循环。之后的一切都无法访问,很快你就会得到一个超出范围异常的索引,因为numbers[i] = i;只是10000deep