Option Explicit
Private Sub Command1_Click()
  Dim t As Long
  Dim i As Long
  Dim m_switch As Boolean
  i = 2
  t = Val(Text1.Text)
  m_switch = False
  Do Until i > t Or m_switch
     If t Mod i = 0 Then
     m_switch = True
     Else
     i = i + 1
     End If
  Loop
  If m_switch Then
  Text2.Text = t & "是素数"
  Else
  Text2.Text = t & "不是素数"
  End If
End Sub这段程序运行后,无论输入的数值是什么,都提示XX是素数.到底哪里出错了?

解决方案 »

  1.   

    小弟不才,看了以后感觉是有点问题。
    If t Mod i=0 Then 这个条件,当i=t时肯定是成立的。所以,这段程序跳出循环的条件肯定是m_switch=True,最后无论输入什么数也就总会提示XX是素数。
      

  2.   

    1、将Do Until i > t Or m_switch中的i>t改为i>=t不然最后总会出现自己出自己,这总是成立的;2、If m_switch Then这句倒了吧,改为If m_switch = False Then
      

  3.   

    Private Sub Command1_Click()
    Dim t As Long
    Dim i As Longt = Val(Text1.Text)
    For i = 2 To t - 1
    If t Mod i = 0 Then
    Text2.Text = t & "不是素数"
    Exit Sub
    End If
    Next iText2.Text = t & "是素数"
    End Sub
      

  4.   

    Do Until i > t Or m_switch换成
    Do Until i >= t Or m_switch就OK了
      

  5.   

    i>t时循环显然已经执行过i=t的情况了。另外感觉你最后的输出信息反了吧?
      

  6.   

    揭帖:我的问题->在你要揭帖的问题后面有个管理->进入管理界面->给回复的人写上要加的分数,自己回复的不能加,所给的分数的和要和你给的分数一致,输入你的密码->给分