代码之家  ›  专栏  ›  技术社区  ›  Wes

Visual Basic:如何显示1和输入数字之间的质数

  •  0
  • Wes  · 技术社区  · 11 年前

    大家好,所以我试图找到任何输入的素数。我希望它们在列表框中,输入在文本框中。我想使用两个参数,但我不知道该怎么做。这是我的代码,我需要极大的帮助。我不擅长视觉基础,我只是需要一些指导。我的代码不工作,但当我按下display时会显示一个下拉框。

    Public Class Form1
        Private Sub Button3_Click_1(sender As Object, e As EventArgs) Handles Button3.Click
    
            Dim prim As Integer
            Dim test As Integer
            Dim imPrime As Boolean = False
            prim = CInt(txtNum.Text)
            test = prim
    
            If prim = 1 Then
                imPrime = False
                MessageBox.Show("Enter a number greater than one please")
            Else
                Do While prim >= 2
                    For i As Integer = 2 To prim
                        If prim Mod i = 0 Then
                            imPrime = False
                            Exit For
                        Else
                            imPrime = True
                            lstPrime.Items.Add(prim)
                        End If
                    Next
                Loop
            End If
            If imPrime = True Then
                lstPrime.Items.Add(prim)
            End If
    
        End Sub
    End Class
    
    2 回复  |  直到 11 年前
        1
  •  2
  •   John Kennedy M. Aquino    9 年前

    这是我在两个数字之间生成素数的最快VBA代码。

    生成的素数被放入剪贴板。您需要打开 然后键入Ctrl+V以查看生成的所有素数。

    Sub generateprimenumbersbetween()
    Dim starting_number As Long
    Dim last_number As Long
    Dim primenumbers As Variant
    Dim a As Long
    Dim b As Long
    Dim c As Long
    starting_number = 1 'input value here
    last_number = 1000000 'input value here
    primenumbers = ""
    For a = starting_number To last_number
        c = Round(Sqr(a)) + 1
        For b = 2 To c
            If a = 1 Or (a Mod b = 0 And c <> b) Then
                Exit For
            Else
                If b = c Then
                    primenumbers = primenumbers & " " & a
                    Exit For
                End If
            End If
        Next b
    Next a
    Dim answer As DataObject
    Set answer = New DataObject
    answer.SetText primenumbers
    answer.PutInClipboard
    End Sub
    
        2
  •  1
  •   Community Mohan Dere    9 年前

    我认为while循环没有按您的预期工作。您需要两个循环,第一个循环计数到可能的素数,而内部循环计数到外部循环中的计数器。

    你可以在任何地方找到例子。。。这里是 one implemented in C# ,但由于您的问题是关于列表框的,我已将其翻译为VB。

    Public Class Form1
    
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            calculatePrimes()
        End Sub
    
        Private Sub calculatePrimes()
    
            Dim prim As Integer
            Dim count As Integer = 0
    
            prim = CInt(Me.TextBox1.Text)
            If prim < 3 Then
                MsgBox("Please enter a bigger number")
                Return
            End If
    
            Me.ListBox1.Items.Clear()
    
            For i As Integer = 1 To prim
                Dim isPrime As Boolean = True
                For j As Integer = 2 To i
                    If (i Mod j <> 0) Then count = count + 1
                Next
                If count = (i - 2) Then Me.ListBox1.Items.Add(i)
                count = 0
            Next
    
        End Sub
    End Class
    

    (这假设您有一个名为TextBox1的输入文本框和一个称为ListBox1的显示列表框)