Tengo este código que encuentra todos los números primos entre 2 valores, pero ¿cómo lo cambio para encontrar solo el primero?
por ejemplo, 33 y 147 = 37
let a, b, i, j, primo; a = window.prompt("Numero minimo: "); b = window.prompt("Numero maximo: "); console.log("Numeros primos entre " + a + " e " + b << " é: "); for (i = a; i <= b; i++) { if (i == 1 || i == 0) continue; primo = 1; for (j = 2; j < i; ++j) { if (i % j == 0) { primo = 0; break; } } if (primo == 1) document.write(i," "); }Puede extender la declaración if final con esto:
if (primo == 1) { document.write(i, " "); break; } break le permite salir del bucle for. Puede obtener más información aquí: https://www.w3schools.com/js/js_break.asp
let a, b, i, j, primo; a = window.prompt("Numero minimo: "); b = window.prompt("Numero maximo: "); console.log("Numeros primos entre " + a + " e " + b << " é: "); for (i = a; i <= b; i++) { if (i == 1 || i == 0) continue; primo = 1; for (j = 2; j < i; ++j) { if (i % j == 0) { primo = 0; break; } } if (primo == 1) { document.write(i, " "); break; } }Ese sería el algoritmo para encontrar el primer número primo en una matriz.
function makeArr(start, end) { end++ return Array.from({length: (end-start)}, (v, k) => k+start) } isPrime = num => { for(let i = 2, s = Math.sqrt(num); i <= s; i++) if(num % i === 0) return false; return num > 1; } nums = makeArr(33,147); r = nums.filter(n => isPrime(n)) console.log(r[0])Envuelto en un ejemplo de función
function getFirstPrimeNumber(s, e) { const start = parseInt(s); let end = parseInt(e); end++; const _a= Array.from({length: (end-start)}, (v, k) => k+start) const isPrime = num => { for(let i = 2, s = Math.sqrt(num); i <= s; i++) if(num % i === 0) return false; return num > 1; } const primes = _a.filter(n => isPrime(n)); return primes[0]; } const a = window.prompt("Numero minimo: "); const b = window.prompt("Numero maximo: "); const r = getFirstPrimeNumber(a,b) console.log('result', r);