Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - darkeado

#1
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.

#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!