Jimbenit, me vas a perdonar, pero tu función EsPrimo está mal codificada. ¿Para qué quieres seguir buscando "submúltiplos" (supongo que querrás decir divisores) si al encontrar uno ya sabemos que el número no es primo? ¿Además, para qué conviertes el número en Integer cuando lo aceptas como Long en el parámetro?Código: Visual BasicPrivate Function EsPrimo(ByVal N as Long) As Boolean Dim i As Long Dim Mitad As Long EsPrimo = True i = 2 Mitad = N/2 Do While (i <= Mitad) And EsPrimo If (N mod i = 0) Then EsPrimo = False Else i = i + 1 End If LoopEnd Function Además, en tu función Nro_Primos creas un vector con tamaño Lim_Sup, cuando los primos son evidentemente muchos menos que Lim_Sup. Así desperdicias mucha memoria y eso es una mala práctica. Tendrías que poner:Código: Visual BasicIf EsPrimo(i) Then Contador = Contador + 1 ReDim Preserve Vector(Contador - 1) Vector(Contador - 1) = i Texto = Texto & i & vbCrLfEnd If Saludos y