VB编程判断一个正整数是不是素数

PrivateSubCommand1_Click()x=Val(InputBox("x="))i=1:f=0DoWhilei<xAndf=0IfxModi=0Thenf=... Private Sub Command1_Click()
x = Val(InputBox("x="))
i = 1: f = 0
Do While i < x And f = 0
If x Mod i = 0 Then
f = 1
i = i + 1
End If
Loop
If f = 0 Then
Print "yes"
Else
Print "no"
End If
End Sub
请问这段代码错在哪里???
展开
 我来答
涐吢铱舊囿儚
2013-12-20 · TA获得超过488个赞
知道小有建树答主
回答量:512
采纳率:100%
帮助的人:575万
展开全部

你的代码,最主要的错误是Do之前,i=1。

  你这样写,任何一个正整数x,都会满足 “If x mod i = 0 then” 的条件。

  这样,都把变量f置为1了。 所以,应该是 i=2 开始。

第2个错误,就是按上面说的,改成 i=2 之后,如果输入任意一个奇数,则因为无法满

  足 “If x mod i = 0 then” 的条件,i 的值就始终不变(一直为初值2),变成死循环!

主要的问题就在这儿了。

还是看我按“你的思路”修正后的代码吧:

百度网友4b68195
2013-12-20 · TA获得超过1520个赞
知道大有可为答主
回答量:1773
采纳率:100%
帮助的人:1703万
展开全部
Private Sub Command1_Click()
x = Val(InputBox("x="))
i = 2: f = 0  'i要从2开始
Do While i < x And f = 0
  If x Mod i = 0 Then
  f = 1
  End If
  i = i + 1
Loop
If f = 0 Then
Print "yes"
Else
Print "no"
End If
End Sub
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
adai_008
2013-12-20 · TA获得超过1385个赞
知道大有可为答主
回答量:1152
采纳率:83%
帮助的人:783万
展开全部
任何正整数 Mod 1都等于0,所以Do的第一次就有F=1,也就不会继续循环了,所以只要不输入0或者1,回答就总是“No"。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式