Calcular los divisores de un numero entero en C++

Calcularemos los divisores de un numero con C++

Es sencillo el código que se necesita para calcular todos los divisores de un número en C++, sencillo en el sentido de que el código es pequeño y además no necesita de muchas funciones avanzadas, aunque para este caso he decido utilizar la función div() para hacer la división y por eso necesitamos la librería cstdlib, además en esta librería también esta la función system("pause").

Código para calcular los divisores de un número en C++



Lo que tenemos que hacer es intentar dividir nuestro número entre otro número menor, no intentaremos con los números mayores que el queremos medir sus divisores porque ningún número mayor puede ser divisor a mi número.

Al usar la función div(); para intentar dividir este número, la misma me devuelve 2 valores dentro de una única variable de tipo div_t, en otras palabras la variable donde almacenare el resultado de la división no puede ser de tipo int u otro, tiene que ser de tipo div_t para almacenar resultados de la funcion div(), en esa variable div_t se almacenaran dos datos, uno conocido como quot (quotient) donde esta almacenado el resultado de la división por ejemplo 8/2 se almacenara 4 pero 9/2 también se almacenara 4, porque en quot, se almacena solo la parte entera que se logró dividir, sabemos que entonces sobra 1, ese 1 se almacena en la otra parte llamada rem (remainer), remainer significa residuo, en el caso donde dividimos 8/2 también existe un remainer de 0, lo que nos interesa no es el quotient sino el remainer que básicamente significa en español residuo.

Si una división tiene residuo mayor a 0 significa que no se dividió de forma completa entre dicho número por eso decimos que este número no es un divisor, si el residuo es 0 entonces estamos ante un divisor de nuestro número por tanto lo anotamos y continuamos calculando otros números todo esto en un bucle hasta llegar al mismo número, porque recordemos que todo número es divisor de si mismo, eso es todo, pasemos al código.

#include <iostream>
#include <cstdlib>

using namespace std;

int a=1; // Esta variable es para incrementar y dividir al numero del usuario
int numero;
div_t resultado;
int main(){
cout << "Ingrese un numero para calcular sus divisores" << endl; // Solicitamos ingresar un numero para calcular
cin >> numero;
cout << "Los divisores de " << numero << " son:" << endl;
while (a<=numero) {
// Este bucle while es para calcular una y otra vez los numeros desde el 1 hasta el numero del usuario
resultado=div(numero,a); // Aqui usamos la funcion div, dividimos el primer numero(variable) entre el segundo
if (resultado.rem==0)
{
// si tiene residuo igual a cero entonces es divisor y por eso lo mostramos en pantalla
cout << a << endl;
}
else{
// De lo contrario no es divisor y por eso no hace falta enlistarlo
}
a++; // incrementamos nuestra variable para calcular el siguiente numero
}

system("pause");
return 0;
}


Código compilado de calculo de divisores en C++

Sumar divisores de un número



Quizá usted solo desee conocer los divisores de un número, pero también puede que desee sumarlos(por motivos matemáticos), de ser así y como no sabemos cuántos divisores tendrá un numero por ejemplo el 780, que ciertamente han de ser muchos(pueden calcularlo con la aplicación anterior en un par de milésimas de segundo), hágase este par de preguntas ¿cuántas variables necesitamos para almacenar cada divisor por separado? o ¿de que otra forma podríamos sumar una cantidad de divisores variable sin necesidad de crear tantas variables, la respuesta es que para esto necesitamos crear nada mas 1 variable más, que almacenara el resultado de la suma por cada divisor e irá sumando cada divisor conforme el programa descubra uno nuevo para así almacenar nada más el resultado de la suma de los divisores anteriores más el nuevo divisor, repitiendo esto una y otra vez, es más fácil que lo que cuesta explicarlo, solo tenemos que hacer esto "suma=suma+a;" veámoslo en acción.

Codigo para sumar divisores con C++



#include <iostream>
#include <cstdlib>

using namespace std;

int a=1;
int numero;
int suma; // Variable para almacenar la suma
div_t resultado;
int main(){
cout << "Ingrese un numero para calcular sus divisores" << endl; // Solicitamos ingresar un numero para calcular
cin >> numero;
cout << "Los divisores de " << numero << " son:" << endl;
while (a<=numero) {

resultado=div(numero,a);
if (resultado.rem==0)
{

cout << a << endl;
suma=suma+a; // Aqui hacemos la suma de un nuevo divisor mas los anteriores y la almacenamos.
}
else{
// De lo contrario no es divisor y por eso no hace falta enlistarlo
}
a++; // incrementamos nuestra variable para calcular el siguiente numero
}
cout << "Y la suma de sus divisores es " << suma << endl;
// Con lo anterior mostramos el resultado al final
system("pause");
return 0;
}


Ejemplo compilado de suma de divisores en C++

Nota: Recuerde que se están sumando todos los divisores incluyendo el 1 y el propio número que es divisor de si mismo, porque esta es la verdadera suma de sus divisores en sentido estrictamente matemático, pero igual puede configurar este cambio a gusto.
Comentarios y preguntas
Luis:
Gracias, yo buscaba un código para la suma de divisores de un numero en C++, la explicación fue clara.