2楼,你定义的numbers本来就不是数组啊,数组后面要有括号的 这个如果要把numbers改成数组,修改比较复杂(虽然其实更推荐这样改);要想改动量小一点,可以直接用List2.List这个属性当数组,把numbers(j)改成Val(List2.List(j))即可(numbers(j+1)当然也要改,注意后面不带括号的numbers自然就不用改了);另外,后面那个AddItem的循环也不需要了(因为直接就把列表框里的数字排序好了) 3楼,你循环了20次,产生了20个数,但是当产生的数不是素数时,你并没有把这个数删掉,重新产生一个数,所以你产生的这20个数里只有5个素数,剩下15个数都是合数,就这样了 修改很简单,把后面那个AddItem的If语句改成这样就行了: If flag = 0 Then List1.AddItem a(i) Else i = i - 1 '我发现你好像不会用单行形式的If啊