求真相帝。。一道素数VB题

单击“读数据”将1oo个正整数读入数组a中,单击"素数"将a中所有素数存入b中,。。答案如下,求解释OptionBase1Dima(100)AsInteger,numAs... 单击“读数据”将1oo个正整数读入数组a中,单击"素数"将a 中所有素数存入b中,。。答案如下,求解释
Option Base 1
Dim a(100) As Integer, num As Integer
Private Sub Command1_Click()
Dim k As Integer
Open App.Path & "\in5.dat" For Input As #1
For k = 1 To 100
Input #1, a(k)
Text1 = Text1 + Str(a(k)) + Space(2)
Next k
Close #1
End Sub
Private Sub Command2_Click()
Dim b(100) As Integer
num = 0
If Len(Text1.Text) = 0 Then
MsgBox "请先执行“读数据”功能!"
Else
'考生编写(功能:生成存放素数的数组 b )
'注意:请务必将数组 b 的元素个数存入变量 num 中
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
'以下程序段将 b 数组的内容显示在Text2中
For i = 1 To num
Text2.Text = Text2.Text + Str(b(i)) + Space(2)
Next i
End If
End Sub
Private Sub Form_Unload(Cancel As Integer)
Open App.Path & "\out5.dat" For Output As #1
Print #1, Text2.Text
Close #1
End Sub
求详解。答案中flag是什么作用,为什么do while 后还要and flag。
另外在求素数中Do While i <= Int(Sqr(a(k))) 和Do While i <= Int(a(k)/2)的效果一样???
展开
 我来答
远风的梦想家
2010-08-03 · TA获得超过2550个赞
知道大有可为答主
回答量:1389
采纳率:0%
帮助的人:0
展开全部
flag是判断是否是素数,每次判断一个数字是否是素数之前,先设置它为True

For k = 1 To 100
flag = True' 这里设置成true
i = 2

Do While i <= Int(a(k) / 2) And flag'判断是否有被除尽过
'当a(k)可以被i除尽的时候flag会被置成false结果就是循环退出
If Int(a(k) / i) = a(k) / i Then
flag = False
Else
i = i + 1
End If
Loop
'如果一直都没有除尽,那么flag就一直都是true,所以a(k)就是素数
If flag = True Then
num = num + 1
b(num) = a(k)
End If
Next k

Do While i <= Int(Sqr(a(k))) 和Do While i <= Int(a(k)/2)

效果是一样的,但是计算量不一样,因为sqr(a(k)) 要小于int(a(k)/2),判断约数的时候只要判断到sqr(a(k))就可以了,但是如果多算一些是没有影响的

不明白的百度HI我
kwtdgl
2010-08-03
知道答主
回答量:10
采纳率:0%
帮助的人:18.1万
展开全部
flag的作用是指当知道a(k)能整除i的时候(a(k)不是素数)就结束循环
Do While i <= Int(Sqr(a(k))) 和Do While i <= Int(a(k)/2)都能起到判定素数的目的,但当a(k)为素数时前者所需的运算步骤会少一些
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式