Hola aqui les dejo el codigo de un pequeño programa, que crea todos los números primos que deseen, esta basado en visual basic 6 y solo lleva un un formulario con estos controles

el formulario debe ser a pantalla completa para poder graficar en él.
Crea los números tratandolos como texto, y prueba que son primos, dividiéndolos por los primos anteriores, aquel que en todas las divisiones cree resto distinto de 0 serpa el siguiente primo.
Los números creados son guardados en un archivo de texto plano, que debe crearse primero en la ubicación que se desea y solo colocar como dato el número 2, lo adjunto por las dudas y lo copian a la carpeta con la ruta que especifiquen.
En 2 horas de trabajo logre tener los números primos hasta el millón, lógicamente el proceso se ralentiza cada vez más para números mayores.
	Tambien les dejo el adjunto del programa compilado  ejecutable comprimido
		
							
						
					el formulario debe ser a pantalla completa para poder graficar en él.
Crea los números tratandolos como texto, y prueba que son primos, dividiéndolos por los primos anteriores, aquel que en todas las divisiones cree resto distinto de 0 serpa el siguiente primo.
Los números creados son guardados en un archivo de texto plano, que debe crearse primero en la ubicación que se desea y solo colocar como dato el número 2, lo adjunto por las dudas y lo copian a la carpeta con la ruta que especifiquen.
En 2 horas de trabajo logre tener los números primos hasta el millón, lógicamente el proceso se ralentiza cada vez más para números mayores.
Código:
	
	Public Num As StringPublic Cant As Single
Public Ban As Integer
Private Sub Command1_Click()
Dim Gap(100001) As Double
Open Text1.Text For Input As #4
ant = "1"
While Not EOF(4)
    Line Input #4, primo
    Num = primo
    gaps = primo - ant
   Gap(CSng(gaps)) = Gap(CSng(gaps)) + 1
   ant = primo
Wend
Close #4
For x = 2 To 100000 Step 2
If Gap(x) > 0 Then
ngap = x
End If
If Maxgap <= Gap(x) Then
Maxgap = Gap(x)
End If
Next
inix = 10000
iniy = 10000
gapant = Gap(2)
a = 4
Do Until a > ngap
Line (inix + (a - 2) * 10000 / ngap, iniy - 10000 * gapant / Maxgap)-(inix + a * 10000 / ngap, iniy - 10000 * Gap(a) / Maxgap), &H0&
Line (inix + (a - 2) * 10000 / ngap, iniy - 10000 * gapant * (a - 2) / 100000)-(inix + a * 10000 / ngap, iniy - 10000 * Gap(a) * a / 100000), &HFF&
gapant = Gap(a)
a = a + 2
Loop
End Sub
Private Sub Command3_Click()
Open Text1.Text For Input As #1
While Not EOF(1)
    Line Input #1, primo
    Num = primo
    Numero.Text = Num
Wend
Close #1
Cant = 0
Do While Cant < CSng(cnt.Text)
    Ban = 0
    ln = Len(Num)
    
' leo un dato
    Open Text1.Text For Input As #2
    While Not EOF(2)
        Line Input #2, primo
        lp = Len(primo)
        
        If Divide(Num, primo) Then
            Ban = Ban + 1
            Close #2
            GoTo 1
        End If
    Wend
    Close #2
    If Ban = 0 And Num <> 2 Then
        Open Text1.Text For Append As #3  'Crear el archivo plano
        Print #3, Num
        
        
        Close #3
        If Cant / 10 = Int(Cant / 10) Then
        Numero.Text = Num
        Numero.Refresh
        End If
        Cant = Cant + 1
    End If
1    a = 0
    Do Until a = ln
        x = Mid(Num, ln - a, 1)
        sig = CInt(x) + 1
        If sig = 10 Then
            If a = ln - 1 Then
                Num = "10" & Right(Num, ln - 1)
            Else
                Num = Left(Num, ln - a - 1) & "0" & Right(Num, a)
            End If
            a = a + 1
        Else
            If a = 0 Then
                Num = Left(Num, ln - a - 1) & sig
            Else
                Num = Left(Num, ln - a - 1) & sig & Right(Num, a)
            End If
            Exit Do
        End If
    Loop
Loop
MsgBox ("TERMINO")
End Sub
Public Function Divide(a, B) As Boolean
ln = Len(a)
lp = Len(B)
If CSng(Left(a, 1)) < CSng(Left(B, 1)) Then
uso = Len(B) + 1
Else
uso = Len(B)
End If
parte = Mid(a, 1, uso)
n = 0
Do Until n > Len(a) - uso
    E = Int(CSng(parte) / CSng(B))
    r = CSng(parte) - CSng(B) * E
    If n = Len(a) - uso Then
        If r = 0 Then
           Divide = True
           Exit Function
        Else
           Divide = False
           Exit Function
        End If
    End If
    parte = CStr(10 * r + CSng(Mid(a, n + uso + 1, 1)))
    n = n + 1
Loop
End Function











 Pero vaya no sabía que había ese problema con números grandes, la verdad que ni idea de Visual Basic, ni casi de programación en general (hice algo de Pascal hace años pero ya ni me acuerdo
 Pero vaya no sabía que había ese problema con números grandes, la verdad que ni idea de Visual Basic, ni casi de programación en general (hice algo de Pascal hace años pero ya ni me acuerdo 




Comentario