Imprimir página | Cerrar ventana

Divisores y primos.

Impreso de: Foro de Access y VBA
Categoría: Access y VBA
Nombre del foro: Tus Funciones Favoritas & Aportaciones & Artí­culos
Descripción del foro: Para publicar código interesante, aportaciones y artículos
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=83607
Fecha de impresión: 24/Abril/2019 a las 00:02


Tema: Divisores y primos.
Publicado por: Sheerkhan
Asunto: Divisores y primos.
Fecha de publicación: 05/Abril/2018 a las 19:47
Con esta función podremos conocer el mínimo divisor de un número, por lo tanto si este es la unidad, el número en cuestión será primo.

Public Function Div_Primo(N As Double) As Double
'Devuelve el mínimo divisor mayor que la unidad, si lo tiene,
' de no tenerlo, devuelve la unidad, por lo tanto será primo.
'uso: Div_Primo 231 devuelve: 3
'autor: EBS "Sheerkhan"

Dim i As Double 'Variable incremental
Dim k As Double 'Raíz cuadrada del número a evaluar
Dim EsPrimo As Boolean

If N < 2 Or N > Int(N) Or IsNull(N) Then
    MsgBox "Por definición, debe ser entero, positivo y mayor que la unidad."
    Exit Function
End If

If N = 2 Or N = 3 Then
    EsPrimo = True
    'Descarto los pares
ElseIf N Mod 2 = 0 Then
    EsPrimo = False
    i = 2
Else
    k = Sqr(N)

    For i = 3 To N Step 2
        If N Mod i = 0 Then
            EsPrimo = False
            Exit For
        ElseIf i < k Then
            EsPrimo = True
            Exit For
        End If
    Next i
End If
    
If EsPrimo = True Then
    Div_Primo = 1
    MsgBox N & " es primo."
Else
    Div_Primo = i
    MsgBox N & " es divisible por: " & i
End If

End Function



Imprimir página | Cerrar ventana