sexta-feira, 15 de dezembro de 2017

Project Euler - 7

Nesse problema proposto em Project Euler, deseja-se descobrir qual é o 10001° número primo.


Uma possibilidade de implementação seria:

Function testPrimo([Int32]$n) {
    if (($n % 2) -eq 0) { return $false }
    [Int32]$c = 3
    while (($c * $c) -le $n) {
        if (($n % $c) -eq 0) { return $false } 
        else { $c +=2 }
    }
    return $true;
}

Function _Main([Int32]$indPrimo) {
    [Int32] $qtdePrimos = 1
    [Int32] $enesimoPrimo = 1
 
    while ($qtdePrimos -lt $indPrimo) {
        $enesimoPrimo += 2;
        if (testPrimo($enesimoPrimo)) {
            $qtdePrimos++;
        }
    }
    Write-Host "O $indPrimo° número primo é: $enesimoPrimo"
}

Clear-Host
_Main 10001

O 10001° número primo é: 104743

Nenhum comentário:

Postar um comentário