Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

202
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!