天天看點

查找随機數組中的質數個數

看到這個标題,我們首先要想到幾個問題來仔細分析

1.随機數如何生成

2.質數是為何物

下面我們就來一一解決剛剛想到的問題

1.随機數

我們假設想生成1000以内的21個随機數

  1.         Dim i As Integer, x As Integer
  2.         Randomize()
  3.         For x = 0 To 20
  4.             i = CInt(Int((1000 * Rnd()) + 1))
  5.             ' 産生1到N的一個任意值()
  6.             Label1.Text = Label1.Text + CStr(i) + vbCrLf
  7.         Next

這樣我們就生成了我們想要的随機數。

2.質數

質數隻能被1和它本身整除

給大家奉上一個求質數的函數:

  1.     Function IsPrimeNumber(ByVal pNumber As Integer) As Boolean
  2.         For iFactor = 2 To Int(Math.Sqrt(pNumber))
  3.             If pNumber Mod iFactor = 0 Then
  4.                 Return False
  5.             End If
  6.         Next
  7.         Return True
  8.     End Function

雖然簡單,很實用哦。但是要注意1不是質數

下面是我所有的代碼,請大家批評指正!

  1. Public Class Form1
  2.     Dim iFactor As Integer
  3.     Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  4.         Dim i As Integer, x As Integer, y As Integer = 0, z As Integer = 0  'x是循環用,y和z是用作計數用的
  5.         Dim arr(20) As Integer
  6.         Randomize()
  7.         For x = 0 To 20
  8.             i = CInt(Int((100 * Rnd()) + 1))
  9.             y = y + 1
  10.             ' 産生1到N的一個任意值()
  11.             Label1.Text = Label1.Text + CStr(i) + vbCrLf
  12.             If IsPrimeNumber(i) = True Then
  13.                 z = z + 1
  14.                 Label2.Text = Label2.Text + CStr(i) + vbCrLf
  15.             End If
  16.         Next
  17.         Label3.Text = y & "," & z
  18.     End Sub
  19.     Function IsPrimeNumber(ByVal pNumber As Integer) As Boolean
  20.         For iFactor = 2 To Int(Math.Sqrt (pNumber))
  21.             If pNumber Mod iFactor = 0 Then
  22.                 Return False
  23.             End If
  24.         Next
  25.         Return True
  26.     End Function
  27. End Class

繼續閱讀