素数的产生与排序,大佬们看看这两个程序代码该怎么调整?
vb吧
全部回复
仅看楼主
level 5
一个是选出素数并排序,另一个是仅产生素数
2024年12月02日 10点12分 1
level 5
这个程序是把列表框1中的素数选出并按冒泡排序(升序)的形式放入列表框2中。选出素数的代码我写对,可是素数排序是哪里不对了?缺少数组,可是在选出素组时我不是已经定义好numbers了吗?
2024年12月02日 10点12分 2
level 5
这个程序是在列表框1中生成20个素数,可为什么只有5个?但却又不提示编译错误
2024年12月02日 10点12分 3
level 15
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啊
2024年12月02日 12点12分 4
补充:2楼代码的修改,只有numbers(j)>numbers(j+1)这一处比较条件在改成List2.List时需要加上Val(其实如果都是两位数的话不加也可以),后面的赋值则不应该加Val(特别是等号左边,加上Val就出错了),另外temp可以改成String类型,与List属性保持类型一致
2024年12月02日 12点12分
1