Dev - C++ - Numeros abundantes

 
Vista:
sin imagen de perfil
Val: 1.440
Bronce
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Numeros abundantes

Publicado por dario (718 intervenciones) el 30/12/2018 10:14:15
Buenas gente del foro, tengo este ejercicio:

Un número abundante es un número para el cual la suma de sus divisores propios es mayor que ese número.
La suma de los divisores propios de 12 sería 1 + 2 + 3 + 4 + 6 = 18,
lo que significa que 12 es un número abundante.

Escriba un programa que acepte el entero de entrada como límite hasta el cual imprimirá números abundantes.
Por ejemplo:

1) Si el usuario ingresa 20, debería imprimir 12,18,20.
2) Si el usuario ingresa 40, debe imprimir 12,18,20,24,30,36,40

Y tengo el siguiente codigo, pero no se porque en la funcion bool esAbundante (int), no me aparecen los numeros abuundantes, solo me imprime una lista de numeros.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <iostream>
 
using namespace std;
 
bool esAbundante(int);
 
int main()
{
  int num,i;
 
  cout << "Ingrese un numero: ";
  cin >> num;
 
  for (i=1; i <=num; i++) {
    if (esAbundante(i))
      cout << i << " ";
  }
 
   return 0;
}
 
bool esAbundante(int n) {
  int j,suma=0;
 
  for (j=1; j<=n; j++) {
    if (n % j == 0)
      suma = suma + j;
  }
 
  if (suma > n)
    return true;
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alfil
Val: 4.344
Oro
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Numeros abundantes

Publicado por Alfil (1444 intervenciones) el 30/12/2018 23:32:40
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <iostream>
 
using namespace std;
 
bool esAbundante(int);
 
int main()
{
  int num;
 
  cout << "Ingrese un numero: ";
  cin >> num;
 
  for ( int i = 1; i <= num; i++ ){
    if (esAbundante(i))
      cout << i << " ";
  }
 
   return 0;
}
 
bool esAbundante(int n) {
  int suma = 0;
 
  for ( int j = 1; j < n; j++ ){
    if ( n % j == 0 )
      suma += j;
  }
 
  if (suma > n) {
    return true;
  } else {
    return false;
  }
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 417
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Numeros abundantes

Publicado por Thanatos (199 intervenciones) el 31/12/2018 00:00:46
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <iostream>
 
using namespace std;
 
bool esAbundante(const int);
 
int main()
{
    int limite;
 
    cout << "Ingrese el limite: ";
    cin >> limite;
 
    for (int numero = 1; numero <= limite; ++numero)
    {
        if (esAbundante(numero))
        {
            cout << numero << "  ";
        }
    }
 
    return 0;
}
 
bool esAbundante(const int numero)
{
    int suma = 0;
 
    for (int divisor = 1; divisor <= numero / 2; ++divisor)
    {
        if (numero % divisor == 0)
        {
            suma += divisor;
        }
    }
 
    return suma > numero;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 1.440
Bronce
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Numeros abundantes

Publicado por dario (718 intervenciones) el 31/12/2018 04:17:11
Gracias por las respuestas,ya me di cuenta en que estaba mal.
Salu2.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar