vb 给一维数组A输入100个100到999之间的随机整数,从中找出所有素数,并按从大到小的顺序显示

如题所述

楼上写的程序,我无语了,要是有这么简单就好了……

下面是我写的程序:

Private Sub Command1_Click()

  Dim a%(1 To 100), isprime As Boolean, k%

  Static b%

  b = 0

  Cls

  

  '随机产生100个100到999的数

  Print "随机产生的100个数是:"

  Randomize

   For i = 1 To 100

     a(i) = Int(Rnd * 900 + 100)

     Print a(i);

     If i Mod 10 = 0 Then Print  '十个数一行

   Next i

   

   '找出素数

   Print "其中是素数的数有:"

   For i = 1 To 100

    If a(i) Mod 2 <> 0 Then   '能被2整除的肯定不是素数,故排除这种情况

      isprime = True  '奇数都有可能是素数,故先假设奇数都是素数

          k = 3               '下面是判断a(i)是不是素数的算法,希望你能看懂

       Do Until k > Sqr(a(i)) Or Not isprime

         If a(i) Mod k = 0 Then

           isprime = False

         Else

            k = k + 2

         End If

       Loop

        If isprime = True Or k > Sqr(a(i)) Then

           b = b + 1 '记录素数的个数

           a(b) = a(i)  '把素数用新的数组保存起来

           Print a(b);

           If b Mod 10 = 0 Then Print

        End If

     End If

   Next i

   

    '冒泡排序法

   For x = b To 2 Step -1

     For y = 1 To x - 1

        If a(y) < a(y + 1) Then temp = a(y): a(y) = a(y + 1): a(y + 1) = temp

    Next y

  Next x

   

   '输出排序后的素数

   Print

   Print "按从大到小排序后的素数:"

   For i = 1 To b

     Print a(i);

     If i Mod 10 = 0 Then Print

   Next i

End Sub 

运行结果如图所示。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-07-07
Private Function zs(x As Integer) As Boolean '素数判断子过程
Dim d%
For d = 2 To Int(Sqr(x))
If x Mod d = 0 Then Exit For: zs = False
If d = Int(Sqr(x)) Then zs = True
Next
End Function
Private Sub Command1_Click()
Dim a(100) As Integer
Randomize '初始化随机数
For i = 1 To 100
a(i) = Int(((999 - 100 + 1) * Rnd) + 100)
Next i
For i = 0 To 100 '首先对数组进行升序排列
For j = 100 To i + 1 Step -1
If a(j) < a(j - 1) Then
t = a(j)
a(j) = a(j - 1)
a(j - 1) = t
End If
Next j
Next i
For i = 1 To 100
If zs(a(i)) = True Then Print a(i); '是素数就输出
Next i
End Sub
第2个回答  2010-07-06
Private Sub Form_Load()
Dim I As Integer, J As Integer
For I = 999 To 100 Step -1
For J = 2 To I - 1
If I Mod J = 0 Then Exit For
Next
If J = I Then Print I;
Next

End Sub
相似回答