domingo, 10 de dezembro de 2017

Project Euler - 6

Duas soluções para o problema 6 do Project Euler.


Function SomaQuadrados([Int32]$Num) {
    [Int32]$soma=0
    For ([int32]$i=1;$i -le $Num;$i++) {
        $soma += $i * $i
    }
    Return $soma
}

Function QuadradoSomas([Int32]$Num) {
    [Int32]$soma=0
    For ([int32]$i=1;$i -le $Num;$i++) {
        $soma += $i
    }
    Return ($soma * $soma)
}

[Int32]$s = SomaQuadrados 100
[Int32]$q = QuadradoSomas 100

Clear-Host
Write-Host -ForeGroundColor Yellow "SOLUÇÃO 1: Força Bruta"
Write-Host "A diferença entre o quadrado da soma dos 100 primeiros números [$q]"
Write-Host "e a soma dos quadrados dos números de 1 a 100 [$s] é: $q-$s ="($q-$s)
Write-Host "---------------------------------------------------------------------"
Write-Host -ForeGroundColor Yellow "SOLUÇÃO 2: Enfoque Matemático"
Write-Host "A soma dos números de 1 a N pode ser calculada com:"
Write-Host "Sn = n * (n + 1) / 2"
Write-Host "Se n = 100"
[Int32]$S100 = 100 * (100 + 1) / 2
Write-Host "S100 = 100 * (100 + 1) / 2 = " $S100
Write-Host "Logo, o quadrado da soma é: " ($S100 * $S100)
Write-Host "A soma dos quadrados de 1 a N pode ser calculada com:"
Write-Host "SQn = n * (n + 1) * (2n + 1) / 6"
Write-Host "Para n = 100"
$SQ100 = 100 * (100 + 1) * (2 * 100 + 1) / 6
Write-Host "SQ100 = 100 * (100 + 1) * (2 * 100 + 1) / 6 = " $SQ100
Write-Host "A diferença entre o quadrado da soma dos 100 primeiros números"
Write-Host "e a soma dos quadrados dos números de 1 a 100 é: "($S100*$S100-$SQ100)


SOLUÇÃO 1: Força Bruta
A diferença entre o quadrado da soma dos 100 primeiros números [25502500]
e a soma dos quadrados dos números de 1 a 100 [338350] é: 25502500-338350 = 25164150
---------------------------------------------------------------------
SOLUÇÃO 2: Enfoque Matemático
A soma dos números de 1 a N pode ser calculada com:
Sn = n * (n + 1) / 2
Se n = 100
S100 = 100 * (100 + 1) / 2 =  5050
Logo, o quadrado da soma é:  25502500
A soma dos quadrados de 1 a N pode ser calculada com:
SQn = n * (n + 1) * (2n + 1) / 6
Para n = 100
SQ100 = 100 * (100 + 1) * (2 * 100 + 1) / 6 =  338350
A diferença entre o quadrado da soma dos 100 primeiros números
e a soma dos quadrados dos números de 1 a 100 é:  25164150

Nenhum comentário:

Postar um comentário