La divisibilidad permite saber si una cantidad se reparte exactamente. En programación se usa para validar números, detectar pares e impares, organizar ciclos y resolver problemas con restos.
Cuando dividimos dos números enteros, puede ocurrir que la división sea exacta o que sobre un resto. La divisibilidad estudia justamente cuándo un número puede dividirse por otro sin dejar resto.
Este concepto es muy útil en programación. Permite saber si un número es par, si una posición corresponde a cierto grupo, si una tarea debe ejecutarse cada cierta cantidad de pasos o si un valor cumple una regla determinada.
En JavaScript, el operador clave para estos problemas es %, conocido como operador módulo o resto.
Decimos que un número a es divisible por un número b si al dividir a / b el resto es 0.
En cambio, 14 no es divisible por 3 porque 14 / 3 deja resto.
console.log(12 % 3);
console.log(14 % 3);
Si el resultado del operador % es 0, la división es exacta.
El operador % devuelve el resto de una división. No devuelve el cociente, sino lo que sobra luego de repartir.
| Expresión | División | Resto |
|---|---|---|
| 10 % 2 | 10 dividido por 2 | 0 |
| 10 % 3 | 10 dividido por 3 | 1 |
| 10 % 4 | 10 dividido por 4 | 2 |
| 10 % 6 | 10 dividido por 6 | 4 |
console.log(10 % 2);
console.log(10 % 3);
console.log(10 % 4);
console.log(10 % 6);
Un número entero es par si es divisible por 2. Si al dividirlo por 2 el resto es 0, es par; si el resto es 1, es impar.
const numero = 17;
if (numero % 2 === 0) {
console.log("Es par");
} else {
console.log("Es impar");
}
Esta validación aparece en juegos, tablas, alternancia de estilos, turnos y problemas de lógica.
Un múltiplo de un número se obtiene al multiplicarlo por un entero. Por ejemplo, los múltiplos de 5 son:
Un número es múltiplo de 5 si se puede escribir como 5 × algún entero.
const numero = 35;
if (numero % 5 === 0) {
console.log("Es múltiplo de 5");
} else {
console.log("No es múltiplo de 5");
}
En programación podemos generar múltiplos repitiendo una multiplicación o avanzando de a saltos dentro de un ciclo.
const base = 4;
for (let i = 1; i <= 8; i++) {
console.log(base * i);
}
Este código muestra los primeros ocho múltiplos positivos de 4.
Un divisor de un número es otro número que lo divide exactamente. Por ejemplo, 3 es divisor de 12 porque 12 dividido por 3 no deja resto.
const numero = 12;
const posibleDivisor = 3;
if (numero % posibleDivisor === 0) {
console.log("Es divisor");
} else {
console.log("No es divisor");
}
Para encontrar divisores, podemos probar todos los números desde 1 hasta el número original y quedarnos con los que dejan resto 0.
const numero = 24;
const divisores = [];
for (let i = 1; i <= numero; i++) {
if (numero % i === 0) {
divisores.push(i);
}
}
console.log(divisores);
Este algoritmo es simple y suficiente para números pequeños. Más adelante, al estudiar números primos y factorización, veremos formas de razonar mejor sobre divisores.
Algunos divisores pueden detectarse con reglas rápidas. Estas reglas son útiles para cálculo mental y también para entender validaciones simples.
| Divisor | Criterio | Ejemplo |
|---|---|---|
| 2 | El número termina en cifra par. | 48 es divisible por 2. |
| 3 | La suma de sus cifras es múltiplo de 3. | 123: 1 + 2 + 3 = 6. |
| 5 | El número termina en 0 o 5. | 75 es divisible por 5. |
| 10 | El número termina en 0. | 120 es divisible por 10. |
En programación normalmente usamos el operador módulo porque es directo y menos propenso a errores.
Cuando una regla se repite, conviene convertirla en una función. Así el código queda más claro y reutilizable.
function esMultiplo(numero, base) {
return numero % base === 0;
}
console.log(esMultiplo(30, 5));
console.log(esMultiplo(31, 5));
console.log(esMultiplo(42, 7));
La función devuelve true si el número es múltiplo de la base y false en caso contrario.
También podemos crear una función para saber si un valor es divisor de otro. Es importante evitar la división por cero, porque cero no puede ser divisor.
function esDivisor(numero, divisor) {
if (divisor === 0) {
return false;
}
return numero % divisor === 0;
}
console.log(esDivisor(20, 4));
console.log(esDivisor(20, 6));
console.log(esDivisor(20, 0));
Esta protección evita resultados incorrectos cuando el divisor viene de una entrada externa.
El módulo se usa mucho para alternar acciones. Por ejemplo, podemos mostrar una etiqueta distinta según si una fila es par o impar.
for (let fila = 1; fila <= 6; fila++) {
if (fila % 2 === 0) {
console.log("Fila par");
} else {
console.log("Fila impar");
}
}
La misma idea puede aplicarse a turnos, colores alternados, patrones visuales o distribución de tareas.
Otra aplicación frecuente es ejecutar una acción cada cierto intervalo. Por ejemplo, mostrar un mensaje cada 3 iteraciones.
for (let paso = 1; paso <= 10; paso++) {
if (paso % 3 === 0) {
console.log("Acción especial en el paso " + paso);
}
}
Este patrón aparece en animaciones, juegos, procesamiento por lotes y tareas programadas.
console.log(17 / 5);
console.log(17 % 5);
console.log(17 % 2);
Divisibilidad, múltiplos y divisores son conceptos simples, pero muy útiles en programación. El operador módulo permite convertir estas ideas matemáticas en condiciones concretas para tomar decisiones dentro de un programa.
En el próximo tema estudiaremos números primos y factorización, dos conceptos que se apoyan directamente en la idea de divisor.