Tengo un problema con esto. Tengo que encontrar el primer número primo mayor que mi constante M.
Por ejemplo, tengo M = 11 y tengo que encontrar el primer número primo mayor que M y es 13.
¿Cómo puedo hacer eso?
// es Prime
const M = 11
function isPrime(num) {
if (num < 2) return false;
for (let i = 2; i < num; i++) {
if (num % i == 0) return false;
}
return true;
}
console.log(isPrime(M))
Y me gustaría encontrar para M = 11, número primo = 13, para M = 15, número primo = 17, etc.
¿Qué has probado hasta ahora? Agregue algún código de muestra suyo si ha probado algo.
- Md Sabbir Alam
28/03/2021 a las 11:00
1
¿Cómo puedo encontrar el primer número mayor que la constante M? M+1
-connexo
10 de octubre de 2021 a las 22:48
------------------------------------
Puedes iterar desde M+1 hasta encontrar tu número primo. Puedes hacer lo siguiente,
function isPrime(num) {
if (num < 2) return false;
for (let i = 2; i < num; i++) {
if (num % i == 0) return false;
}
return true;
}
findGreaterPrime = (m) => {
let i = m+1;
let found = false;
while(!found) {
if(isPrime(i)) {
found = true;
return i;
}
i++;
}
}
console.log(findGreaterPrime(11));
console.log(findGreaterPrime(13));
Por cierto, este método será muy lento para números grandes. Puedes utilizar algunos generadores primarios rápidos. Puedes seguir las respuestas en este hilo.
0
------------------------------------
Solución sencilla y rápida, a través de prime-lib (soy el autor).
El siguiente ejemplo genera 2 números primos, comenzando con 7 en adelante:
import {generatePrimes, stopOnCount} from 'prime-lib';
const i = generatePrimes({start: 7}); // infinite prime-iterator
const s = stopOnCount(i, 2); // stop-iterator
const values = [...s]; // 7, 11
Comprueba si el inicio es un número primo para incluirlo en ese momento. Si solo necesitas un número primo que sigue, simplemente verifica si el primer número coincide con tu número M y luego toma el siguiente:
if(values[0] === M) {
// use values[1]
} else {
// use values[0]
}