Primero estoy tratando de empujar solo números primos (sin 2) a una matriz y luego sumarlos todos pero quedando indefinidos.
He estado trabajando en esto durante largos días, agradecería si alguien pudiera ayudarme.
let letsCheck = () => { let ourList = [] let sum = 0 for(let i = 2; i <= 50; i++) { if(i % 2 !== Number.isInteger()) { ourList.push(Number(i)) } } for(let prime in ourList) { sum += ourList[prime] } }En primer lugar, no está comprobando números primos sino números impares mediante el operador %.
En segundo lugar, está comprobando la función Number.isNumber que devolverá el valor booleano, por lo que la comparación tiene algunos problemas.
Aquí hay una solución que puede ayudar.
let letsCheck = () => { let ourList = [] let sum = 0 for(let i = 3; i <= 50; i++) { if(isPrimeNumber(i)) { ourList.push(Number(i)) } } for(let prime in ourList) { sum += ourList[prime] } } const isPrimeNumber = number => { for(let i = 2; i <= Math.ceil(number/2); i++) { if(number % 2 === 0) { return false; } } return true; }A partir de su código, era más probable obtener números pares/impares en lugar de números primos.
Los números primos son números enteros mayores que 1, que tienen solo dos factores: 1 y el número en sí .
Los números impares son los números que no tienen 2 como su factor, y tendrán resto = 1 si se divide por 2.
Entonces, como la programación matemática básica, el mod funciona como multiplicación/suma/resta que si ambos operadores/números son Integer , el resultado sería Integer . La operación mod es básicamente para obtener los restos de la división, es decir, 5/2 5 / 2 = 2, with remainders = 1 , por lo tanto, 5 % 2 = 1 .
Y, en el bucle, la i ya es un número, por lo que presionar Number(i) es equivalente a presionar i solo. Si solo desea obtener la suma, la matriz no es necesaria allí y debe eliminarse. Puede obtener la suma acumulándola en la variable de sum .
Por lo tanto, si desea obtener la suma de números impares en el rango [2,50] , debería ser:
let letsCheck = () => { let sum = 0 for(let i = 2; i <= 50; i++) { if(i % 2 !== 0) { sum += i; } } console.log(sum); } letsCheck();Y si desea obtener los números primos del 0 al 50 excepto el 2, debe ser:
function isPrimeExclude2(num) { if(num <= 2) return false; for(let i=2; i*i <= num; i++){ if (num % i == 0) return false; } return true; } let letsCheck = () => { let sum = 0 for(let i = 2; i <= 50; i++) { if(isPrimeExclude2(i)) { sum = sum + i; } } console.log(sum); } letsCheck();