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

201
Vistas
Javascript encuentra números primos en una matriz sin usar una función

Número primo es un número que se divide por sí mismo o por 1 pero nada más. Estoy tratando de crear un programa que le pida al usuario dos números y luego encuentre los números primos en el rango entre ellos sin usar una función y cree una nueva matriz con solo los números primos.

El primer ciclo for está designado para contener los números entre el inicio y el final. El segundo ciclo es para verificar cada número si se dividió por cualquier número desde 2 hasta el número mismo (excepto él mismo y uno).

Luego, "si declaración" que indica si incluso un número se divide por él sin resto: que no es un número primo y que debería romper este ciclo. Aquí es donde me quedo atascado.

De alguna manera quiero decirle al programa que si se "rompió" eso significa que no es un número primo, de lo contrario... ¡lo es!

si usé la función, simplemente podría usar return y eso lo resolvería, pero quiero sin usar la función.

 let start = +prompt("Give me a start number") let end = +prompt("Give me an end number") let newArray = [] let primeArray = [] for (let i = start; i <= end; i++) { newArray.push(i) } for (num of newArray) { for (let i = 2; i < num; i++) { if (num % i == 0 ) { break } } if (i !== num) { console.log(i) primeArray.push(num) } } document.write(primeArray)

Esta es mi solución:

 let start = +prompt("Give me a start number") let end = +prompt("Give me an end number") let primeArray = [] let isPrime = true if (start < 2) { start = 2 } for (num = start; num <= end; num++) { isPrime = true for (let i = 2; i < num; i++) { if (num % i == 0) { isPrime = false break } } if (isPrime == true) { primeArray.push(num) } } document.write(primeArray)
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Creo que entiendo el problema: si la interrupción no funciona, definir un booleano y cambiarlo a verdadero probablemente sea una solución suficiente (sucia) para su código.

 let start = +prompt("Give me a start number") let end = +prompt("Give me an end number") let newArray = [] let primeArray = [] let truthCheck = true; for (let i = start; i <= end; i++) { newArray.push(i) } for (num of newArray) { for (let i = 2; i < num; i++) { if (num % i == 0 ) { truthCheck = false; } } if (i !== num && truthCheck == true) { console.log(i) primeArray.push(num) } } document.write(primeArray)
about 4 years ago · Juan Pablo Isaza Denunciar

0

Problemas:

  • El alcance de i es incorrecto. Debido a que usó let inside de la inicialización del bucle, solo existe hasta la parte inferior del cuerpo del bucle. No existe cuando intenta verificar (i !== num) . Si desea usarlo después del ciclo, debe definirlo antes del ciclo.
  • Tu condición i !== num está invertida. Eso será cierto solo si num no es primo porque sale del ciclo temprano cuando descubre un divisor válido> 2 ( num % i == 0 ). Solo si el bucle se completa (no se encuentran divisores) i == num será verdadero. Cambie la línea a if (i == num) { .

El código fijo resultante:

 let start = +prompt("Give me a start number") let end = +prompt("Give me an end number") let newArray = [] let primeArray = [] for (let i = start; i <= end; i++) { newArray.push(i) } for (num of newArray) { let i; for (i = 2; i < num; i++) { if (num % i == 0) { break } } if (i == num) { console.log(i) primeArray.push(num) } } document.write(primeArray)

Ejemplo: responder 562 y 850 arrojará: [563, 569, 571, 577, 587, 593, 599, 601, 607, 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701, 709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811, 821, 823, 827, 829, 839]

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