Xanth
Hi,
ich möchte mir ein Programm schreiben, was JEDE PRrimzahl von 1 bis unendlich ausrechnet, wenn ich es beende das der sich die Zahl merkt und beim nächsten starten des Programmes der ab dem letzten Stand weiter reechnet. Und man soll die Primzahlen speichern können.
Hier mal der Code:
Public Class frmMain
Private strPrimzahlen As String
Private Primzahl As Integer
Private geändert As Boolean
Private Sub cmdrechnen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdrechnen.Click
lstPrimzahlen.Items.Clear()
lstPrimzahlen.Items.Add(2)
bg.RunWorkerAsync()
End Sub
Private Sub bg_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles bg.DoWork
Dim n As Integer
If Val(txtto.Text) = -1 Then
n = 3
While bg.CancellationPending = False
Dim isprimzahl As Boolean = True
If n / 2 = Math.Round(n / 2) Then isprimzahl = False
If n / 3 = Math.Round(n / 3) Then isprimzahl = False
If n / 5 = Math.Round(n / 5) Then isprimzahl = False
If n / 7 = Math.Round(n / 7) Then isprimzahl = False
If n = 3 Then isprimzahl = True
If n = 5 Then isprimzahl = True
If n = 7 Then isprimzahl = True
If isprimzahl Then
geändert = True
Primzahl = n
strPrimzahlen &= n & vbCrLf
bg.ReportProgress(1)
Threading.Thread.Sleep(1)
End If
n += 2
End While
Else
For n = 3 To Val(txtto.Text) Step 2
If bg.CancellationPending Then Exit For
Dim isprimzahl As Boolean = True
If n / 2 = Math.Round(n / 2) Then isprimzahl = False
If n / 3 = Math.Round(n / 3) Then isprimzahl = False
If n / 5 = Math.Round(n / 5) Then isprimzahl = False
If n / 7 = Math.Round(n / 7) Then isprimzahl = False
If n = 3 Then isprimzahl = True
If n = 5 Then isprimzahl = True
If n = 7 Then isprimzahl = True
If isprimzahl Then
geändert = True
Primzahl = n
strPrimzahlen &= n & vbCrLf
bg.ReportProgress(1)
Threading.Thread.Sleep(1)
End If
Next n
End If
End Sub
Private Sub btnCancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCancel.Click
bg.CancelAsync()
End Sub
Private Sub bg_ProgressChanged(ByVal sender As System.Object, ByVal e As System.ComponentModel.ProgressChangedEventArgs) Handles bg.ProgressChanged
If geändert Then
prbState.Style = ProgressBarStyle.Marquee
prbState.Value = e.ProgressPercentage
lstPrimzahlen.Items.Add(Primzahl)
lblprimzahlencount.Text = lstPrimzahlen.Items.Count
geändert = False
End If
End Sub
Private Sub bg_RunWorkerCompleted(ByVal sender As System.Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles bg.RunWorkerCompleted
If e.Cancelled = True Then MsgBox("Abgebrochen")
prbState.Style = ProgressBarStyle.Blocks
prbState.Value = 0
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
MsgBox("Speichern: Speichert ALLE Primzahlen. Ende: Beendet.")
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
My.Computer.FileSystem.CreateDirectory("C:\Primzahlen\")
My.Computer.FileSystem.WriteAllText("C:\Primzahlen\Primzahlen.txt", strPrimzahlen, False)
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
End
End Sub
End Class
Ich hoffe ich ihr könnt mir helfen.
Jöran
ich möchte mir ein Programm schreiben, was JEDE PRrimzahl von 1 bis unendlich ausrechnet, wenn ich es beende das der sich die Zahl merkt und beim nächsten starten des Programmes der ab dem letzten Stand weiter reechnet. Und man soll die Primzahlen speichern können.
Hier mal der Code:
Public Class frmMain
Private strPrimzahlen As String
Private Primzahl As Integer
Private geändert As Boolean
Private Sub cmdrechnen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdrechnen.Click
lstPrimzahlen.Items.Clear()
lstPrimzahlen.Items.Add(2)
bg.RunWorkerAsync()
End Sub
Private Sub bg_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles bg.DoWork
Dim n As Integer
If Val(txtto.Text) = -1 Then
n = 3
While bg.CancellationPending = False
Dim isprimzahl As Boolean = True
If n / 2 = Math.Round(n / 2) Then isprimzahl = False
If n / 3 = Math.Round(n / 3) Then isprimzahl = False
If n / 5 = Math.Round(n / 5) Then isprimzahl = False
If n / 7 = Math.Round(n / 7) Then isprimzahl = False
If n = 3 Then isprimzahl = True
If n = 5 Then isprimzahl = True
If n = 7 Then isprimzahl = True
If isprimzahl Then
geändert = True
Primzahl = n
strPrimzahlen &= n & vbCrLf
bg.ReportProgress(1)
Threading.Thread.Sleep(1)
End If
n += 2
End While
Else
For n = 3 To Val(txtto.Text) Step 2
If bg.CancellationPending Then Exit For
Dim isprimzahl As Boolean = True
If n / 2 = Math.Round(n / 2) Then isprimzahl = False
If n / 3 = Math.Round(n / 3) Then isprimzahl = False
If n / 5 = Math.Round(n / 5) Then isprimzahl = False
If n / 7 = Math.Round(n / 7) Then isprimzahl = False
If n = 3 Then isprimzahl = True
If n = 5 Then isprimzahl = True
If n = 7 Then isprimzahl = True
If isprimzahl Then
geändert = True
Primzahl = n
strPrimzahlen &= n & vbCrLf
bg.ReportProgress(1)
Threading.Thread.Sleep(1)
End If
Next n
End If
End Sub
Private Sub btnCancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCancel.Click
bg.CancelAsync()
End Sub
Private Sub bg_ProgressChanged(ByVal sender As System.Object, ByVal e As System.ComponentModel.ProgressChangedEventArgs) Handles bg.ProgressChanged
If geändert Then
prbState.Style = ProgressBarStyle.Marquee
prbState.Value = e.ProgressPercentage
lstPrimzahlen.Items.Add(Primzahl)
lblprimzahlencount.Text = lstPrimzahlen.Items.Count
geändert = False
End If
End Sub
Private Sub bg_RunWorkerCompleted(ByVal sender As System.Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles bg.RunWorkerCompleted
If e.Cancelled = True Then MsgBox("Abgebrochen")
prbState.Style = ProgressBarStyle.Blocks
prbState.Value = 0
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
MsgBox("Speichern: Speichert ALLE Primzahlen. Ende: Beendet.")
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
My.Computer.FileSystem.CreateDirectory("C:\Primzahlen\")
My.Computer.FileSystem.WriteAllText("C:\Primzahlen\Primzahlen.txt", strPrimzahlen, False)
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
End
End Sub
End Class
Ich hoffe ich ihr könnt mir helfen.
Jöran