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

177
Vistas
convertir la matriz dada en una matriz booleana donde cada elemento es verdadero si el número es un número primo y falso en caso contrario

Necesito averiguar si un número es primo o no está en una matriz. al principio pensé que era fácil, pero.. :)

Primero probé esta versión:

 function primeValues(arr) { let newArr = [] for( let el of arr) { if (el <= 2 ) { newArr.push(true) } for (let j=2; j<el; j++) { if (el%j === 0) { newArr.push(false) } if (el%j !==0 ) { newArr.push(true) } } } return newArr; } console.log(primeValues([17, 3, 21]));

Pero cada vez que pasa por for loop , presiona True o False en mi nueva matriz:/`

 (35) [true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false, true, true, true, false, true, true, true, true, true, true, true, true, true, true, true, true, true]

¿Qué tengo que hacer? :/

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

0

 function primeValues(arr) { return arr.map(element => { const x = Math.abs(element); if(x <= 2) return true; if(x % 2 === 0) return false; for(let i = 3; i <= Math.sqrt(x); i+=2) { if(x % i === 0) { return false; } } return true; }); } console.log(primeValues([7,9,11,13,-21,2,54]));

Agregué algunas optimizaciones al código.

  1. Verificamos solo números impares porque un elemento no puede ser divisible por un número par si aún no es divisible por 2.
  2. No necesitamos verificar TODOS los números menores que "elemento"; solo necesitamos verificar los números desde 3 hasta la raíz cuadrada del elemento. Si necesita alguna explicación adicional de por qué, puedo dársela.
  3. Sugiero usar "mapa" en lugar de crear una matriz y presionar allí; es más eficiente. Además, lo protege de perder las declaraciones "else" y "break": cada verificación finaliza inmediatamente cuando se agrega true o false a la lista de respuestas.

UPD: se agregó la llamada a la función Math.abs , por lo que los números negativos se procesarán correctamente.

about 4 years ago · Juan Pablo Isaza Denunciar

0

Por aquí...

 console.log( JSON.stringify( primeValues( [17, 3, 21 ] ))) function primeValues(arr) { let result = [], modulo; for( let el of arr) { if (el <= 2 ) result.push(true) else // this one is missing in your code { modulo = 1 // modulo initial assignement must be there for (let j = 2; j < el; j++) // or (let j=3; j<el; j +=2) { // see Alexey Zelenin explanations modulo = el % j if (modulo === 0) { result.push(false) break // this other one is missing in your code } } if (modulo !== 0) result.push(true) // test last modulo value } // outside the loop (and it's scope) } return result; }

Pero es posible que prefiera codificarlo así:

 console.log( JSON.stringify( primeValues([ 17, 3, 21 ] ))) function primeValues(arr) { let result = [] , isNotPrim ; for (let el of arr) { isNotPrim = false if (el > 2) for (let j = 2; j < el; j++) if (isNotPrim = !(el %j)) break ; result.push( !isNotPrim ) } return result; }

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