Torna al Thread
Public Class Form1
Sub FindPrimes(ByVal count As Integer)
'eventualmente pulisci il contenuto della TB
TextBox1.Clear()
'Aggiungo l'unico numero primo pari:
TextBox1.AppendText("2" + vbCrLf)
'Il numero correntemente analizzato:
'si parte da 3 e si prendono in consi-
'derazione solo i numeri dispari
Dim cur As Integer = 3
'Col ciclo popolo l'array del risultato
For i As Integer = 1 To count - 1
start:
Dim radq As Integer = Math.Sqrt(cur)
Dim divisore As Integer
'dato che abbiamo solo numeri dispari,
'si analizzano solo divisori dispari
'fino alla radice quadrata del numero
For divisore = 3 To radq Step 2
'se il risultato di una divisione
'da reto zero, il numero non è primo
If (cur Mod divisore) = 0 Then
'quindi aumento di due il numero analizzato
'(ottenendo il numero disperi successivo)
cur += 2
'e ricomincio ad analizzare
GoTo start
End If
Next
'se il risultato di nessuna divisione da 0
'il numero è primo
TextBox1.AppendText(cur)
TextBox1.AppendText(vbCrLf)
cur += 2
Next
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Me.FindPrimes(TextBox1.Text)
End Sub
End Class