Muy buenas, acabo de registrarme en el foro puesto que tengo un problema al que no le veo solución. Estoy haciendo un programa que me devuelva los divisores de 1 al 1000 y me diga cual de los numeros cuenta con más divisores. Sin embargo siempre me devuelve 60 (con 12 divisores), y conté por ejemplo los de 1000 y me salen 16. Les dejo el código para que le den un vistazo puesto que estoy seguro que encontraran la solución.
Salud!
Código [Seleccionar]
#include <iostream>
using namespace std;
void divisors(int n)
{
for (int i=1; i<=n; i++)
{
if (n%i==0)
cout << i << endl;
}
}
long contaDivisors(int n)
{
long cd=0;
for (int i=1; i<=n; i++)
{
if (n%i==0)
cd++;
}
return cd;
}
int main()
{
long maxDivisors=0;
for (int num=1; num<=1000; num++)
{
if(contaDivisors(num)>=maxDivisors)
maxDivisors=num;
cout << endl << "Els divisors de " << num << " son:" << endl;
divisors(num);
}
cout << "\n\n\n";
cout << "El nombre mes gran amb mes numero de divisors es el " << maxDivisors << " amb " << contaDivisors(maxDivisors) << " divisors.";
cout << "\n\n\n";
return 0;
}
Salud!