Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

173
Visualizações
¿Por qué unshift() devuelve un valor diferente que push() si estoy apuntando al primer elemento en el primero y al último elemento en el último?

Tengo una función para Project Euler #7. Hacia el final, cambié el código de primeArray.push(i); a primeArray.unshift(i) y return primeArray[primeArray.length - 1]; para return primeArray[0]; . Esto alteró el regreso. En la antigua. Devolvió la respuesta correcta, 104021, mientras que el último devolvió 20001, que ni siquiera es primo. No entiendo por qué es eso.

 function primeFinder(primeTarget) { //since 2 is the only even prime, putting it here saves us some effort in checking primality by just iterating over the odd numbers //it also helps the for loop since we are only interested in checking for divisors among previous primes. let primeArray = [2]; let i = 3; while (primeArray.length < primeTarget) { let primeLogger = false; //We don't need to check for divisibility by 2, so j can equal 1 for (j = 1; j < primeArray.length && primeArray[j] < Math.sqrt(i); j++) { if (i % primeArray[j] === 0) { primeLogger = true; //Since we have found a divisor and changed primeLogger, we can exit the loop break; } } //Where the break goes to, and also where the for loop goes to once finishes if (primeLogger === false) { primeArray.push(i); } i += 2; } return primeArray[primeArray.length - 1]; } console.log(primeFinder(10001));
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Porque primeArray ahora está en orden descendente, pero su ciclo aún busca de principio a fin; ahora desde los valores más grandes hacia los más pequeños. Hasta que encuentre algo que sea >= Math.sqrt(i) que muy probablemente será la primera verificación, j=1 .
Luego termina el ciclo con primeLogger === false

así por ejemplo, para:

 i=9, j=1 primeArray === [7,5,3,2] primeArray[j] === 5

Y dado que el control 5 < Math.sqrt(9) es false , el bucle finaliza.

Por lo tanto, 9 es un número primo y ahora se agrega al comienzo de primeArray .

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda