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
分享:
2014-09-30

2014-09-30最佳答案

素数的定义:只能被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

其它1条答案

111

2014-09-30