Problem 3

Largest prime factor

Problem 3

Find the largest prime factor of the number 600851475143

Tentativa 1 - 25/11/2025

Diminuindo para abaixo de 21 Os fatores primos seriam 3, 7

Primeiro ir incrementando um contador até o número desejado x Verificar o x % i == 0, caso positivo é um fator Verificar se o fator é primo do jeito

Tentativa 2 - 25/11/2025

Depois de tentar por um tempo percebi que o jeito mais simples é ir decrementando o x/2 e verificando se é primo

O programa não funciona para números muito grandes.

Primeiro problema que bruteforce não vai dar certo

Tentativa 3 - 25/11/2025

Vamos tentar um jeito mais otimizado

Se for um primo, seria somente ele mesmo e 1 Então o número que está pedindo não é um número primo

30 -> 2 x 3 x 5

60 -> 2 x 2 x 3 x 5

300 -> 2 x 2 x 3 x 5 x 5

33 -> 3 x 11

361 -> 19 x 19

Tentando entender os fatores primos para numeros diversos...

Ok. Se começar do x=0 até n/2 verificando se é primo e x % n == 0

Ainda não deu certo

Tentativa 4 - 29/11/2025

Aprendi sobre [[factoração]] de primos no math is fun https://www.mathsisfun.com/prime-factorization.html

Todo número pode ser factorizado con factores primos

Então se eu pegar esse número bem grande e ir testando factorizar, assim que encontrar o primeiro ja podemos dividi-lo de cara e teremos um número beeem menor. Assim o código não vai bruteforçando por muito tempo

let end = 600851475143n
let largest = 0
let divisor = 2n
while (end > 1) {
    if (end % divisor === 0) {
      largest = divisor;
      end = end / divisor;
    } else {
      divisor++;
    }
}
console.log(`Maior fator: `, largest);

EM 29/11/2025 consegui implementar esse REPL que roda totalemnte no cliente em python usando WASM

O JS estava dando muito problema para numeros grandes

© 2025