IsPrime.psm1

#region IsPrimeFunction
Function IsPrime {
    Param(
        [Parameter(Mandatory=$true,
                    HelpMessage="Input integer to be validated.")]
        [ValidateNotNullOrEmpty()]
        [ValidatePattern('\d+')]
        [Int32] $InputInteger
    )

    #region Begin
    Begin {
        Write-Verbose "Begin Invocation IsPrime for input: $InputInteger";
    }
    #endregion Begin
    
    #region Process
    Process {
        Write-Verbose "Processing $InputInteger...";

        if($InputInteger -eq 1 -or $InputInteger -eq 0) {
            Write-Verbose "$InputInteger is not prime. Prime numbers start from 2.";
            return $false;
        }

        $IsPrime = $true;

        for($i=2; $i -le ([math]::Sqrt($InputInteger)); $i++ ) {
            $quotient = $InputInteger / $i;
            if( $quotient -is [Int32]) {
                Write-Verbose "Validation failed for $i!"
                $IsPrime = $false;
                break;
            }
        }

        if($IsPrime) {
            Write-Verbose "$InputInteger is prime!"
        }
        else {
            Write-Verbose "$InputInteger is not prime!"
        }
        return $IsPrime;
    }
    #endregion Process
    
    #region End
    End {
        Write-Verbose "End Invocation IsPrime for input: $InputInteger";
    }
    #endregion End
}
#endregion IsPrimeFunction

#begin Export
Export-ModuleMember -Function IsPrime
#endregion