A continuación, veremos un programa en Excel VBA que verifica si un número es primo o no.
Antes de empezar: en matemáticas, un número primo es un número que tiene exactamente dos divisores numéricos distintos: 1 y él mismo. Los veinticinco números primos más pequeños son: 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73 , 79, 83, 89 y 97. Por ejemplo, 8 tiene 1, 2, 4 y 8 como divisores y no es un número primo.
Situación:
1. Primero, declaramos tres variables. Una variable entera que llamamos divisores, una variable larga que llamamos número y una variable larga que llamamos i. Usamos variables Long aquí porque las variables Long tienen mayor capacidad que las variables Integer.
Dim divisors As Integer, number As Long, i As Long
2. Inicializamos dos variables. Inicializamos los divisores de variables con valor 0. Usamos la función InputBox para obtener un número del usuario.
divisors = 0
number = InputBox("Enter a number")
Después de que el usuario haya ingresado un número, queremos verificar si este número es un número primo o no. Recuerde, un número primo tiene exactamente dos divisores numéricos distintos: 1 y él mismo.
3. Comenzamos un ciclo For Next.
For i = 1 To number
4. Ahora viene la parte más importante del programa. Para calcular el número de divisores de un número, usamos el operador Mod. El operador Mod da el resto de una división. Por ejemplo, 7 mod 2 = 1 porque 7 dividido por 2 es igual a 3 con un resto de 1. Solo si 'número mod i' = 0, i es un divisor de número. En este caso, queremos incrementar los divisores de variables en 1. La macro siguiente hace el truco.
If number Mod i = 0 Then
divisors = divisors + 1
End If
Excel VBA verifica esto para i = 1, i = 2, i = 3, i = 4 hasta que i = número. Tenga en cuenta que i = 1 e i = número siempre son divisores de número. Solo si estos números son los únicos divisores de números, el número es un número primo.
5. No olvide cerrar el ciclo.
Next i
6. Si los divisores son iguales a 2, mostramos un cuadro de mensaje que dice que el número ingresado es un número primo. Si el número de divisores es mayor que 2, mostramos un cuadro de mensaje que dice que el número ingresado no es un número primo.
If divisors = 2 Then
MsgBox number & " is a prime number"
Else
MsgBox number & " is not a prime number"
End If
7. Pruebe el programa.
Resultado para 104729:
6/9 ¡Completado! Obtenga más información sobre las declaraciones if then>
Siguiente capítulo: bucle