收集被修改;枚举操作可能无法继续

时间:2016-02-06 00:20:29

标签: vb.net

我运行此代码并出现错误: 收集被修改;枚举操作可能不会执行。 它还突出了这一行:

Next

以下是代码:

Dim Maxnum As Integer = 100
        Dim PrimeList As New Generic.List(Of Integer)
        PrimeList.Add(2)


        For Prime As Integer = 3 To Maxnum Step 1
            For Each element As String In PrimeList
                If Prime Mod element = 0 Then

                Else
                    PrimeList.Add(Prime)
                End If
            Next
        Next

有人愿意帮助我吗?

非常感谢!

2 个答案:

答案 0 :(得分:0)

如果你搜索,你会发现其他检查素数的方法,但如果你只想找到2到100之间的素数,你的方法就可以了。

如果要循环遍历PrimeList中的所有元素,则需要避免在循环内更新Primelist。在任何情况下,在检查所有可能的除数之前,您无法确定数字是否为素数。

以下代码使用id来跟踪是否找到任何除数。

Boolean

答案 1 :(得分:-1)

正如错误所述,您正在迭代它时修改集合。当您调用PrimeList.Add(Prime)时,它会向集合中添加另一个项目,从而更改长度。

        For Each element As String In PrimeList
            If Prime Mod element = 0 Then

            Else
                PrimeList.Add(Prime)
            End If
        Next