Sub trobaPrimer()
    'Declaració i inicialització
    Dim found As Boolean
    Dim number As Currency
    Dim message As String
    found = False
    number = 2977
    'Es comprova que el número a evaluar no sigui un número parell
    'Es selecciona només la terminació del número a evaluar per evitar un sobreeiximent
    str2 = number
    str3 = Mid(str2, (Len(str2)), 1)
    'S'evalúa si és un número parell
    If str3 Mod 2 = 0 Or str3 Mod 5 = 0 Then
        'Si ho és, s'acaba la funció
        'Es llança un missatge de final de rutina
        message = "El número " & number & " no és primer. És parell o múltiple de 5."
        MsgBox message
    'Si és senar, s'evalúa si es tracta d'un primer
    Else
        'Es busquen tots els possibles divisors
        For i = 2 To (number - 1) / 2
            'S'evalúa que el possible divisor sigui un número parell
            str2 = (i)
            str3 = Mid(str2, (Len(str2)), 1)
            If Not str3 Mod 2 = 0 Then
                'Si la divisió no té residu és que s'ha trobat un divisor
                If ((number / (i)) = Fix(number / (i))) Then
                    message = "El número " & number & " no és primer. Un dels divisors és " & (i) & "."
                    MsgBox message
                    Exit Sub
                Else
                    'Si no s'ha trobat cap divisor es tracta d'un número primer
                    'atès que no hi pot haver cap divisor que sigui més gran de ((number - 1) / 2)
                    found = True
                End If
            End If
        Next
    End If
    'Si s'ha trobat que és primer, es llança un missatge
    If found Then
        message = "El número " & number & " és primer."
        MsgBox message
    End If
End Sub
Cap comentari:
Publica un comentari a l'entrada