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

时间:2015-03-29 17:19:58

标签: vb.net function primes basic

大家好,所以我试图找到任何输入的素数。我希望它们在列表框中,并在文本框中输入。我想用两个参数,但我不知道如何。这是我需要直接帮助的代码。我不是最好的视觉基础我只需要一些指导。当我按下显示时,我的代码无效,但显示下拉框。

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 个答案:

答案 0 :(得分:2)

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

生成的素数放在剪贴板中。你需要打开 你的ms office word并输入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

答案 1 :(得分:1)

我认为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的显示列表框)