Find the largest prime factor of the number 600851475143
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
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
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
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