Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

279
Vistas
No puedo encontrar la causa del bucle infinito en Javascript (después de traducir una función de Python)

Estoy traduciendo una función que escribí en Python a Javascript, pero en JS tengo un bucle infinito mientras que en Python todo funciona bien.

Aquí está mi código en Python:

 def isPrime(n: int) -> bool: # Since neither 1 nor 0 is a prime number, return false if n == 1 or n == 0: return False # Loops from 2 to n for i in range(2, n): # If the number is divisible by i, then n is not a prime number if n % i == 0: return False # Otherwise, n is a prime number return True def getPrimes(n: int) -> list[int]: """ Take a positive int number n as a parameter and prints to the console the first n prime numbers """ primes = [] count = 0 while len(primes) < n: if isPrime(count): primes.append(count) count += 1 return primes

Aquí está mi código en Javascript:

 function isPrime(num) { // Since neither 1 nor 0 is a prime number, return false if (num == 1 || num == 0) { return false } // Loops from 2 to n for (let i = 2; i <= num; i++) { // If the number is divisible by i, then n is not a prime number if (num % i == 0) { return false } } // Otherwise, n is a prime number return true } function getPrimes(num) { let primes = []; count = 0; while (primes.length < num) { if (isPrime(count) === true) { primes.push(count); } count++; } return primes; }

En Python, cuando llamo a la función getPrimes(n) , devuelve correctamente una matriz que contiene los primeros n números primos.

Pero en Javascript, la misma función provoca un bucle infinito.

¿Por qué está pasando eso? Gracias de antemano.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

No está causando un bucle infinito, su isPrime(num) simplemente devuelve false para cada número, porque tiene i <= num , lo que hace que num % num == 0 se evalúe como true y devuelva false . Solo arréglalo a i < num

 function isPrime(num) { // Since neither 1 nor 0 is a prime number, return false if (num === 1 || num === 0) { return false } // Loops from 2 to n for (let i = 2; i < num; i++) { // If the number is divisible by i, then n is not a prime number if (num % i === 0) { return false } } // Otherwise, n is a prime number return true } function getPrimes(num) { let primes = []; count = 0; while (primes.length < num) { if (isPrime(count) === true) { primes.push(count); } count++; } return primes; } console.log(getPrimes(10)) // [2, 3, 5, 7, 11, 13, 17, 19, 23, 29]
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda