vb判断素数的方法,这个答案我看不懂,谁能帮忙解释一下,解释的好我会追加的

For k = 1 To 100 flag = True i = 2 Do While i <= Int(a(k) / 2) And flag If Int(a(k) / i) = a(k) / i Then flag = False Else i = i + 1 End If Loop If flag = True Then num = num + 1 b(num) = a(k) End If Next k

  • migratorybirds 2014-09-30 16:23
  • 收藏问题 ( 0人收藏 )
  • 举报

你的IE浏览器版本过低,为了提升体验,

建议升级到IE10以上或使用Chrome、搜狗等浏览器!

2个答案
  • 6688 2014-09-30 16:39
    素数的定义:只能被1和自身整除的自然数,叫做素数。利用这个素数的特征,判断一个自然数N是否素数的方法:就用2,3,4,....,N-1这些自然数,一一地去除该自然数N,若过所有这些都不能整除那么N是素数,只有有一次整除N就不是素数。你的程序里,是有一个数组a,该数组有100个元素,分别为a(1),a(2),...a(100),假设已经存有不同的自然数。现在是判断这100个自然数里有几个素数,如果是素数就保存到另一个数组 b里。For k = 1 To 100 '构成循环1到100对100个元素,一一进行判断 flag = True '设置标记,假设该自然数为可以被I整除 i = 2 '从2开始去除某个自然数a(k) '为了提好效率,整除到Int(a(k)/2),(即a(k)的一半)不要到a(i)-1,这个结论数学上有证明 '记得,整除到Int(Sqr(a(i))),效率更高,这个数学上也有证明 Do While i <= Int(a(k) / 2) And flag If Int(a(k) / i) = a(k) / i Then 'Int(a(k) / i) = a(k) / i表示能被I整除, flag = False '能被整除,就不是素数了,可以结束i循环了,设置标记 Else i = i + 1 '如果不能整除,就继续下一次除法(用i+1去除) End If Loop If flag = True Then '如果i循环结束,没有1次能整除,这时flag仍然保持True num = num + 1 '说明该自然数是素数,b的下标增加1 b(num) = a(k) ‘在数组B里将该素数保存起来 End If Next k
  • 酸菜 2014-09-30 16:37
    111