作业帮 > 综合 > 作业

For i = 1 To 100 For j = 2 To a(i) / 2 if a(i) Mod j = 0 The

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/04/16 17:23:48
For i = 1 To 100 For j = 2 To a(i) / 2 if a(i) Mod j = 0 Then Exit For Next j If j > a(i) / 2
这是一个求素数的程序段的一部分
既然j的取值是 j = 2 To a(i) / 2
为什么后面还有j > a(i) / 2
功能:生成存放素数的数组 b
将数组 b 的元素个数存入变量 num 中(所有变量均已定义)
For i = 1 To 100
For j = 2 To a(i) / 2
If a(i) Mod j = 0 Then Exit For
Next j
If j > a(i) / 2 Then
num = num + 1
b(num) = a(i)
End If
Next i
重点需要理解内循环的含义:
判断a(i)是否素数,只要用2 ...a(i)/2的数能除尽,就不是素数,也就是说,执行Exit For 跳出内循环的数a(i)肯定不是素数i!此时的就j肯定不超过a(i)/2
如果一个数a(i),用2 ...a(i)/2的所有数相除,都不能除尽,该数肯定是素数,分析一下此时内循环在循环终止时的操作,当j=a(i)/2,满足循环条件执行循环内语句,返回循环头,j自动增1,即j=1+a(i)/2.因此,只要j>a(i)/2,a(i)就是素数.
f语句意为:只要j能够除尽i,就退出内循环.如果